条件MySQL查询 - 结果的隐私

时间:2012-06-04 11:25:19

标签: mysql conditional

我正在尝试从数据库表中获取视频。条件:只有在用户的隐私设置不限制观看时才应包含视频。

视频表: video table

隐私可以是0,1,2或3。

关系表: relationships

假设我想要获取所有视频的页面,但不应包含那些我不是朋友的视频的限制。 (稍后,我将扩展此查询以包括“联系人”)。

这意味着应该查询具有此隐私设置的所有视频:

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上}}

如何显示所有视频,但不包括那些我不是朋友的人?

1 个答案:

答案 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
相关问题