我正在使用SQLite,并且希望只获取每个表中具有唯一值的行。我知道如何获取每个列的值,但无法创建一个(SQLite兼容)选择来获取两列的唯一值。
以下是数据示例:
| 列_A|列B|
| - ------| - ------|
| 一百一十一|七七七|
| 二百二十二|三百三十三|
| 二百二十二|一百一十一|
| 四四四|三百三十三|
| 二百二十二|五百五十五|
| 三百三十三|六六六|
| 三百三十三|七七七|
上例中我希望得到的结果是具有唯一值的行,这些值仅包括:四十四万五百五十五六百六十六
| 列_A|列B|
| - ------| - ------|
| * * 四百四十四*|三百三十三|
| 二百二十二|* * 五百五十五人**|
| 三百三十三|* * 六百六十六**|
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)
我已经尝试了联合和其他几种方法,但无法达到预期的结果。
3条答案
按热度按时间dldeef671#
要按
UNION ALL
开始过滤,请考虑关键字*******中的任意一个都是合适的选项沿着可与HAVING
子句一起确定不同的值,例如Demo
vaj7vani2#
我认为您需要这样的查询:
SQL小提琴
qmelpv7a3#
演示; https://dbfiddle.uk/9tzUASle