SQLite/SQLAlchemy: 检查多个列的值为 NULL 或相同
SQLite/SQLAlchemy: Check values are either NULL or the same for several columns
我想检查几列:对于每一列,值是 NULL
或所有记录都相同。
例如下面的条件成立table
+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+------+------+------+
| A | B | NULL | NULL |
| NULL | B | C | NULL |
| A | B | C | NULL |
+------+------+------+------+
我该怎么做,最好是通过一次查询?
编辑:
另一个问题是:如何对每个选定列的不同值求和
您可以检查每个单独列中的不同值数是否小于或等于 1:
SELECT COUNT(DISTINCT Col1) <= 1 ok1,
COUNT(DISTINCT Col2) <= 1 ok2,
COUNT(DISTINCT Col3) <= 1 ok3,
COUNT(DISTINCT Col4) <= 1 ok4
FROM tablename;
或者,您可以获得整个 table:
的结果
SELECT MAX(
COUNT(DISTINCT Col1),
COUNT(DISTINCT Col2),
COUNT(DISTINCT Col3),
COUNT(DISTINCT Col4)
) <= 1 ok
FROM tablename;
参见demo。
我想检查几列:对于每一列,值是 NULL
或所有记录都相同。
例如下面的条件成立table
+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+------+------+------+
| A | B | NULL | NULL |
| NULL | B | C | NULL |
| A | B | C | NULL |
+------+------+------+------+
我该怎么做,最好是通过一次查询?
编辑:
另一个问题是:如何对每个选定列的不同值求和
您可以检查每个单独列中的不同值数是否小于或等于 1:
SELECT COUNT(DISTINCT Col1) <= 1 ok1,
COUNT(DISTINCT Col2) <= 1 ok2,
COUNT(DISTINCT Col3) <= 1 ok3,
COUNT(DISTINCT Col4) <= 1 ok4
FROM tablename;
或者,您可以获得整个 table:
的结果SELECT MAX(
COUNT(DISTINCT Col1),
COUNT(DISTINCT Col2),
COUNT(DISTINCT Col3),
COUNT(DISTINCT Col4)
) <= 1 ok
FROM tablename;
参见demo。