我正在使用 SQLite,并且只想获取每个表具有唯一值的行。我知道如何获取每列的值,但无法创建单个(sqlite 兼容)选择来从两列获取唯一值。
这是数据示例:
| 可乐 | 列_B |
|---|---|
| 111 | 第777章 |
| 222 | 第333章 |
| 222 | 111 |
| 第444章 | 第333章 |
| 222 | 第555章 |
| 第333章 | 第666章 |
| 第333章 | 第777章 |
我从上面的示例中获得的期望结果是具有唯一值的行,其中仅包括:444、555、666。
| 可乐 | 列_B |
|---|---|
| 第444章 | 第333章 |
| 222 | 第555章 |
| 第333章 | 第666章 |
222 不应出现在结果中,因为它在 col_A 中多次出现。777 不应出现在结果中,因为它在 col_B 中多次出现。我只需要 col_A 或 col_B 中出现一次值。每个表的唯一值,而不是列。
我能走多远:
SELECT *
FROM my_table
WHERE
(SELECT col_A as asset from my_table GROUP BY col_A HAVING COUNT(*) = 1
UNION
SELECT col_B as asset from my_table GROUP BY col_B HAVING COUNT(*) = 1)
IN (col_A, col_B)
Run Code Online (Sandbox Code Playgroud)
我尝试过 UNION 和其他一些方法,但无法达到预期的结果。
要通过UNION ALL考虑关键字来开始过滤,要么
是合适的选项,要么与HAVING子句一起确定不同的值,例如
WITH t1 AS
(
SELECT col
FROM (SELECT col_A AS col FROM t UNION ALL
SELECT col_B FROM t) AS tt
GROUP BY col
HAVING COUNT(*)=1
)
SELECT t.*
FROM t1
JOIN t
ON col IN ( col_A , col_B )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |