这是我的 MySQL 查询,我在这个查询中遇到了一个 week 问题。我不知道如何将 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;
我想要 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)
简报
如果视频发布日期已过且与当前周不匹配,则适用前一周
我自己
当我像这样尝试自己时,他们会返回给我所有数据
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;
我在这个查询中做错了什么?
最佳答案
试试这个 -
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;
关于mysql - 如何使用 MySql 在此查询中应用带有 WHERE CLAUSE 的 IF 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10681745/