1

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

视频表: 视频表

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

关系表: 关系

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

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

隐私 = 0

隐私!= 1(个人资料视频被隐藏)

隐私 = 3在这个成员的朋友列表中

我的用户 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语句只能用在查询的选择部分?

伪代码查询: SELECT all videos WHERE privacy != 1 AND IF (privacy = 3) { myuserid must be on users_friendslist} )

如何显示所有视频,但排除我不是朋友的人的视频?

4

1 回答 1

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
于 2012-06-04T11:59:59.033 回答