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

标签 mysql database if-statement where

这是我的 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/

相关文章:

mysql - 如何删除 InnoDB 数据库中带有约束的 MySQL 表前缀

php - PostgreSQL 安装错误 "unable to write inside temp environment variable path"

php - 如何显示数据库中的类别和子类别

php - 当同一脚本快速启动两次时,来自 php 脚本的 mysql 查询的执行顺序

php - 两个 ORDER BY/随机选择一个

python-2.7 - 有没有比这更好的方法来实现强化学习的 Softmax Action 选择?

与多个比较==(水果机任务)

PHP/MYSQL查询无结果,编码错误?

java - 如何搭建小型文件存储?

java - 如何使用 if 语句停止计时器