【发布时间】:2020-10-21 11:51:55
【问题描述】:
我想选择 5 列中的值(如果不为空)不相等的记录。任意数量的列都可以是非空的。
架构: 给定表
**Schema (SQLite v3.30)**
CREATE TABLE test (
id INT,
col1 text,
col2 text,
col3 text,
col4 text,
col5 text
);
INSERT INTO test (id, col1, col2, col3, col4, col5) VALUES (1, 'EA', 'EA', null, null, null);
INSERT INTO test (id, col1, col2, col3, col4, col5) VALUES (2, 'EA', 'MT', null, null, null);
INSERT INTO test (id, col1, col2, col3, col4, col5) VALUES (3, null, 'EA', null, 'KG', null);
INSERT INTO test (id, col1, col2, col3, col4, col5) VALUES (4, null, null, 'KG', 'MT', 'AB');
INSERT INTO test (id, col1, col2, col3, col4, col5) VALUES (5, null, null, 'EA', 'MT', 'EA');
---
**Query #1**
SELECT * FROM test;
| id | col1 | col2 | col3 | col4 | col5 |
| --- | ---- | ---- | ---- | ---- | ---- |
| 1 | EA | EA | | | |
| 2 | EA | MT | | | |
| 3 | | EA | | KG | |
| 4 | | | KG | MT | AB |
| 5 | | | EA | MT | EA |
---
期望的输出
| id | col1 | col2 | col3 | col4 | col5 |
| --- | ---- | ---- | ---- | ---- | ---- |
| 2 | EA | MT | | | |
| 3 | | EA | | KG | |
| 4 | | | KG | MT | AB |
| 5 | | | EA | MT | EA |
编辑:为了澄清, id=5 包含在输出中,因为并非所有值都相同。当我声明所有列的值不相等时,我的意思是是否有任何值与其他非空值不同。换一种说法,我要求记录至少有 1 个与其他非空值不同的非空值。
【问题讨论】:
-
您希望没有重复项或所有值都不相等吗?
-
您能详细说明一下吗?我的意思是说如果 2 个或更多值不为 null,它们应该是不相等的。这就是我要查询的内容。