如何在此查询中使用MySql应用带有WHERE CLAUSE的IF条件

Que*_*ter 3 mysql database if-statement where

这是我的MySQL查询,我在这个查询中有一周的问题.我不知道如何应用带条件的IF条件WHERE.

查询:

SELECT
*,
IFNULL((SELECT ur.user_rating FROM user_rating ur 
WHERE ur.vid_id = v.id AND ur.user_id = '1000'),'NULL') AS user_rating
FROM videos v
WHERE WEEK(v.video_released_date) = WEEK(NOW())
AND  
v.`is_done` = 1
ORDER BY v.admin_listing ASC; 
Run Code Online (Sandbox Code Playgroud)

我想要OR(我如何在where子句中应用这个条件?)

IF( WEEK(v.video_released_date) = WEEK(NOW()) , WEEK(NOW()) , WEEK(NOW())-1)
=
IF( WEEK(v.video_released_date) = WEEK(NOW()) , WEEK(NOW()) , WEEK(NOW())-1)
Run Code Online (Sandbox Code Playgroud)

简报

如果视频发布日期已过,但与当前周不匹配则适用上周

当我像这样尝试自己时,他们会将整个数据归还给我

SELECT
*,
IFNULL((SELECT ur.user_rating FROM user_rating ur 
WHERE ur.vid_id = v.id AND ur.user_id = '1000'),'NULL') AS user_rating
FROM videos v
WHERE IF(WEEK(v.video_released_date) = WEEK(NOW()),WEEK(NOW()),WEEK(NOW())-1)
= IF(WEEK(v.video_released_date) = WEEK(NOW()),WEEK(NOW()),WEEK(NOW())-1) 
AND  
v.`is_done` = 1
ORDER BY v.admin_listing ASC;
Run Code Online (Sandbox Code Playgroud)

我在这个查询中做错了什么?

JHS*_*JHS 5

试试这个 -

    SELECT *,
           IFNULL((SELECT ur.user_rating FROM user_rating ur 
                   WHERE ur.vid_id = v.id AND ur.user_id = '1000'),'NULL') AS user_rating
    FROM videos v
    WHERE WEEK(v.video_released_date) = IF(WEEK(v.video_released_date) = WEEK(NOW()),WEEK(NOW()),WEEK(NOW())-1) 
    AND  v.is_done = 1
    ORDER BY v.admin_listing ASC;
Run Code Online (Sandbox Code Playgroud)