SQL 用于在多个组中查找唯一值
SQL for finding unique values in multiply groups
卡在数据块应用程序的 SQL 问题上,我试图识别一列中的哪些唯一值属于两个或多个组。例如:
COL_A COL_B
123 A
234 B
345 B
123 B
456 A
567 C
345 C
345 A
我寻找的结果会告诉我在 A 组和 B 组中都找到了唯一值 123,在 B、C 和 A 组中找到了 345。类似...
123 A
123 B
345 B
345 C
345 A
或者有更好的方法吗?
您可以通过以下操作找到具有多个 col_b
的 col_a
:
select col_a
from t
group by col_a
having min(col_b) <> max(col_b);
然后您可以将其合并到查询中以获取原始数据:
select t.*
from t join
(select col_a
from t
group by col_a
having min(col_b) <> max(col_b)
) tt
on t.col_a = tt.col_a;
这应该有效:
SELECT a.* FROM myTable a
JOIN(
SELECT COL_A, COUNT(COL_B)
FROM myTable
GROUP BY COL_A
HAVING COUNT(COL_B) > 1
) b on a.COL_A = b.COL_A
ORDER BY COL_A, COL_B
卡在数据块应用程序的 SQL 问题上,我试图识别一列中的哪些唯一值属于两个或多个组。例如:
COL_A COL_B
123 A
234 B
345 B
123 B
456 A
567 C
345 C
345 A
我寻找的结果会告诉我在 A 组和 B 组中都找到了唯一值 123,在 B、C 和 A 组中找到了 345。类似...
123 A
123 B
345 B
345 C
345 A
或者有更好的方法吗?
您可以通过以下操作找到具有多个 col_b
的 col_a
:
select col_a
from t
group by col_a
having min(col_b) <> max(col_b);
然后您可以将其合并到查询中以获取原始数据:
select t.*
from t join
(select col_a
from t
group by col_a
having min(col_b) <> max(col_b)
) tt
on t.col_a = tt.col_a;
这应该有效:
SELECT a.* FROM myTable a
JOIN(
SELECT COL_A, COUNT(COL_B)
FROM myTable
GROUP BY COL_A
HAVING COUNT(COL_B) > 1
) b on a.COL_A = b.COL_A
ORDER BY COL_A, COL_B