在sqlite3数据库中,我有一个名为date的列。我需要一个查询,如果所有日期值相同,则返回相同的值。如果不是,则应返回NULL。
如何在SQL中最好地表达这一点?
答案 0 :(得分:4)
SELECT CASE WHEN MIN(DateColumn) = MAX(DateColumn)
THEN MIN(DateColumn)
ELSE NULL -- not needed, added for clarity
END AS result
FROM TableX ;
不确定SQLite,但在大多数DBMS中,如果(DateColumn)
上有索引,则MIN / MAX条件将比使用COUNT()
的任何查询更有效。
答案 1 :(得分:1)
SELECT CASE WHEN COUNT(DISTINCT DateColumn) = 1
THEN DateColumn
ELSE NULL
END AS result
FROM YourTable;