我有一个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中实现这种条件的任何想法?
答案 0 :(得分:0)
您可以使用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)
答案 1 :(得分:0)
将条件更改为以下格式:
AND CASE WHEN table1.col7 = 'foo' THEN '2016-10-01'
WHEN table1.col7 = 'bar' THEN '2016-09-01'
.... END > (SELECT... )