【发布时间】:2016-03-14 11:00:26
【问题描述】:
请看一下查询:
SELECT Id
FROM TableA
WHERE ColumnA = 'foo'
ORDER BY Id DESC
LIMIT 1
基本上,我希望查询获取 TableA 上的最新条目(列 Id 是 AI )并声明条件 ColumnA = 'foo'.
查询将顺利运行并返回我需要的内容。如果没有匹配条件 ColumnA = 'foo' 的表条目,则结果为 null。
话虽如此,我添加了一个 CASE 来代替返回 1。 ELSE,返回 Id。以下是新查询:
SELECT CASE
WHEN Id IS NULL
THEN 1
ELSE Id
END
FROM TableA
WHERE ColumnA = 'foo'
ORDER BY Id DESC
LIMIT 1
使用给定的查询,如果条件为假,则不会有任何结果。它是空白的。甚至不是 NULL。
问题是,为什么会这样?在我看来,结果应该是 1。
这是一个用于测试的 Fiddle 链接:http://sqlfiddle.com/#!9/a8e3af/3
注意: 如果我使用 MAX 而不是将结果限制为 1,这将起作用。我只是想知道为什么这个解决方案不起作用。
【问题讨论】:
-
如果没有匹配的行,使用第一个查询的结果也不应该为空。它应该是一个空的结果集。