SQL中的If条件

SQL中的If条件,sql,mariadb,Sql,Mariadb,澄清。我希望有一个查询来查找具有最新时间戳的行,但是如果该行的column deleted设置为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 W

澄清。我希望有一个查询来查找具有最新时间戳的行,但是如果该行的column deleted设置为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都会有所帮助。

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

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

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

我知道您想要“删除”结果(如果有)。否则需要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;
勾选这个:

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

标记您正在使用的DBMS产品(例如MySQL、PostgreSQL、Oracle、MS SQL Server等)。“SQL只是一种查询语言,而不是特定数据库产品的名称。请编辑您的问题并提供示例数据和所需结果。一个列没有一个值,它的每一行都有一个值,因此您的描述没有意义。如果您可以添加可用数据和所需结果,那就更好了。问题需要更好的澄清如果
id
表中不唯一,则会有区别。如果“id”不唯一,请将OR子句放入子查询中