如果条件在SQL中

时间:2017-12-13 12:00:41

标签: sql mariadb

澄清。我想有一个查询,找到我最新的时间戳行,但如果该行已将列删除设置为1,那么我想要返回NULL。这就是我想要做的。

我想在WHERE子句中使用子查询进行查询:

SELECT *
FROM table
WHERE id = (SELECT id FROM table WHERE ts > 'x' ORDER BY ts LIMIT 1)

但问题是表中有一个名为DELETED的列,如果DELETED = 1我希望得到这个

SELECT *
FROM table 
WHERE id = NULL

我怎么能这样做?

我正在使用 MariaDB ,但任何SQL都会有所帮助。

3 个答案:

答案 0 :(得分:1)

我知道你想要" DELETED"结果,如果有的话。否则你想要ts大于x的行。假设" DELETED为0,如果不是1,你可以像这样使用Gordons SQL:

SELECT t.*
FROM table t
WHERE (t.ts > 'x' or t.deleted = 1)
ORDER BY t.deleted desc, t.ts
LIMIT 1;

答案 1 :(得分:0)

我不认为这与您的问题有关,但为什么不执行查询:

SELECT t.*
FROM table t
WHERE t.ts > 'x'
ORDER BY t.ts
LIMIT 1;

它似乎比您的查询版本更简单 - 假设id在表格中是唯一的。

答案 2 :(得分:0)

检查一下:

SELECT *
FROM table
WHERE id = (SELECT id FROM table WHERE ts > 'x' ORDER BY ts LIMIT 1)
AND deleted = 0;