问题描述
|
我有一个故事表,一个用户表和一个点赞表。
我想对故事表执行查询,该表将基于在likes表中是否存在具有故事ID和给定用户ID的记录来包含user_liked(BOOLEAN TRUE或FALSE)。
因此,请从故事中选择所有(和user_liked),如果该用户喜欢,则user_liked为true,否则为false。
希望这有意义吗?
解决方法
布尔数据类型本身在MS SQL Serer中不存在。您应该改用bit日期类型。
字符串值TRUE和FALSE可以
转换为位值:TRUE为
转换为1并转换为FALSE
到0。
在不知道您确切的模式和数据库规则的情况下,我认为这可能对您有用。
Select u.UserId,s.StoryId
Cast((Case When l.UserId Is Null Then 0 Else 1 End) as bit) as [UserLiked]
From Users u
Left Join Likes l on u.UserId = l.UserId
Left Join Stories s on l.UserId = s.UserId
Where u.UserId = @SomeUserId
, 这似乎可行:
存在SELECT s。*(从喜欢l中选择l.id,其中l.user_id = \'1 \'和l.story_id = s.id)作为user_likes FROM故事s;
我不知道exist()函数是否存在! ;)
@barry和@ Scorpi0-谢谢你的想法