我有一个 sql 命令,我将其解析为自定义 pdo 函数。该命令完美运行。
SELECT table1.* FROM table1
LEFT JOIN table2 ON table2.col1 = table1.col3
WHERE table1.col4 = 'myVal'
AND 2016-10-01 > (
SELECT MAX(loginDate) FROM table4 WHERE table4.id = table1.id
)
我遇到的问题是我的示例 2016-10-01
中的值依赖于列值。例如,如果 table1.col7 = 'foo' 那么我希望比较值为 2016-10-01
。如果 table1.col7 = 'bar' 我希望比较值为 2016-09-01
。如果 table1.col7 = 'test' 我希望比较值为 2016-08-01
。否则我希望比较值为 2016-07-01
。
关于如何在 mysql 中实现这种条件的任何想法?
最佳答案
您可以使用 CASE
来生成所需的日期值:
SELECT table1.*
FROM table1
LEFT JOIN table2 ON table2.col1 = table1.col3
WHERE table1.col4 = 'myVal' AND
CASE table1.col7
WHEN 'foo' THEN '2016-10-01'
WHEN 'bar' THEN '2016-09-01'
WHEN 'test' THEN '2016-08-01'
ELSE '2016-07-01'
END
>
(SELECT MAX(loginDate) FROM table4 WHERE table4.id = table1.id)
关于Mysql命令CASE与子查询比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40509237/