J'ai une table feeds
avec une colonne de tableau JSON (UserLike
) des gens qui aiment ça. Le tableau sera comme:filtre SQL Server 2016 dans json_value
FeedID FeedName UserLike
1 Feed 1 [{"UserID":1,"UserName":"User 1"},{"UserID":2,"UserName":"User 2"},...]
2 Feed 2 [{"UserID":1,"UserName":"User 1"},{"UserID":2,"UserName":"User 2"},...]
3 Feed 3 [{"UserID":1,"UserName":"User 1"}]
Je veux obtenir la liste des flux et exactement comme informations de connexion de l'utilisateur par comparaison UserID
(s'il a aimé, ou non retourner null UserLike, je veux obtenir la ligne d'alimentation, même si la connexion l'utilisateur n'est pas dans la liste UserLike
).
Comment puis-je le faire? T-pris en charge par SQL quelque chose comme:
select
FeedID, FeedName,
Json_value(UserLike, '$[UserID=1].UserName')...
Le résultat que je prévois est:
FeedID FeedName UserID UserName
1 Feed 1 2 User 2
2 Feed 2 2 User 2
3 Feed 3 NULL NULL
avec clause WHERE: UserID = 2
salut @ gofr1: Tout d'abord, je vous remercie beaucoup pour votre réponse. Deuxièmement, désolé, je n'écris pas clairement la structure de la table. Il doit être comme ceci
'FeedID FeedName UserLike 1 Flux 1 [{" UserID ": 1," UserName ":" User 1 "}, {" UserID ": 2," UserName ":" User 2 "}, ...] 2 RSS 2 [{ "UserID": 1, "UserName": "User 1"}, { "UserID": 2, "UserName": "User 2"}, ...] 3 RSS 3 [{ "UserID": 1, "UserName": "1 utilisateur"}] '
– user3238543
S'il vous plaît, modifier votre question, ce code difficile à lire des commentaires. – gofr1
hi @ gofr1: D'abord, merci beaucoup pour votre réponse. Deuxièmement, désolé, je n'écris pas clairement la structure de la table. Il a fixé dans mon message. Donc, j'ai essayé d'utiliser 'CROSS APPLY OPENJSON (UserLike)'. Mais la chose est, l'enregistrement sans userID de l'utilisateur de connexion dans UserLike ne montrera pas. Et la liste retournée n'est pas excellement ce que je veux. Je veux obtenir la liste des flux, et l'info si je l'ai aimé ou non. Ajouter une instruction WHERE après une application croisée openjson me fera manquer des enregistrements. Avez-vous des conseils, ou je fais mal? Merci beaucoup !! Désolé, mon poste première fois dans la pile :). – user3238543