在 sqlite3 数据库中,我有一个名为 date 的列。我需要一个查询,如果所有日期值都相同,则返回相同的值。如果不是,它应该返回 NULL。
我怎样才能最好地在 SQL 中表达这一点?
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()
.
SELECT CASE WHEN COUNT(DISTINCT DateColumn) = 1
THEN DateColumn
ELSE NULL
END AS result
FROM YourTable;