【发布时间】:2021-09-25 11:12:21
【问题描述】:
这是一个困扰我好几天的问题。该语句的目的是如果在表中没有找到任何行,或者如果有行要返回最新的(基本上是最大的)bottomDepth,则返回“0”。
SELECT CASE COUNT(_id)
WHEN 0 THEN '0' ELSE BottomDepth END AS 'BottomDepth'
FROM Stratigraphy WHERE guid='2cd0b6bb-41f2-407e-b6e8-c032824d550f'
AND (InstatanceState IS null OR InstatanceState != 5) AND (4 IS null OR _id < 4)
AND (DeletedFlag IS NULL OR DeletedFlag < 1)
ORDER BY _id DESC LIMIT 0,1
问题是当有行时,它不是返回最新的bottomDepth,而是返回表中的第一个bottomDepth(几乎就像它忽略了WHERE 子句一样)。我是 SQL 新手,所以有人可以解释为什么返回 2.0 而不是 4.0?
【问题讨论】:
-
4 IS null这是什么?