我正在尝试从数据库表中获取视频。条件:只有在用户的隐私设置不限制观看时才应包含视频。
视频表:
隐私可以是0,1,2或3。
关系表:
假设我想要获取所有视频的页面,但不应包含那些我不是朋友的视频的限制。 (稍后,我将扩展此查询以包括“联系人”)。
这意味着应该查询具有此隐私设置的所有视频:
privacy = 0
隐私!= 1(隐藏个人资料视频)
privacy = 3 AND 我在此会员朋友列表
我的用户ID是1。
我尝试了这个查询,但它没有给我想要的结果:
SELECT videos.*,
FROM `video_table` AS `videos`
WHERE
(
videos.privacy != 1
OR (
videos.privacy = 3
AND '1' IN (
SELECT friendslist.relationid
FROM friendslist
WHERE friendslist.userid = videos.userid
AND friendslist.friend = 'yes'
)
)
)
LIMIT 20
我想IF语句只能用在查询的选择部分吗?
伪代码中的查询: 选择所有视频WHERE privacy!= 1 AND IF(privacy = 3){myuserid必须在users_friendslist上}}
如何显示所有视频,但不包括那些我不是朋友的人?
答案 0 :(得分:0)
SELECT *
FROM video_table AS v
WHERE privacy = 0
OR (privacy = 3
AND @myId IN (
SELECT f.relationid
FROM friendslist AS f
WHERE f.userid = v.userid
AND f.friend = 'yes'
)
)
LIMIT 20