[英]find rows that multiple columns are identical using SQL query
我必须编写查询以从表T中获取结果集
其中表T
定义为
我需要获取在As列中具有相同值并且在Cs列中也具有相同值的行。 如何编写查询? (使用通用SQL查询)
采用:
SELECT a.PrimaryKey, b.PrimaryKey
FROM T a
INNER JOIN T b
ON a.columnA = b.columnA
AND a.columnC = b.columnC
AND a.PrimaryKey < b.PrimaryKey
这将给出所有两行(仅一次使用inequality子句)。
如果太多(具有三对A–B,A–C,B–C),则也可以使用标准SQL将左键限制为该组的最小键的情况(然后,您将仅获得A–B和A–C):
SELECT a.PrimaryKey, b.PrimaryKey
FROM T a
INNER JOIN T b
ON b.columnA = a.columnA
AND b.columnC = a.columnC
LEFT JOIN T c
ON c.columnA = a.columnA
AND c.columnC = a.columnC
AND c.PrimaryKey < a.PrimaryKey
WHERE a.PrimaryKey < b.PrimaryKey
AND c.PrimaryKey IS NULL
要查找表中重复的元组A,C,可以使用
SELECT A, C, count(*)
FROM T
GROUP BY A, C
HAVING count(*) >=2
现在,您可以从表T中选择在此“重复项”集中具有A,C的所有行。
Select PrimaryKey, A, B, C
FROM T JOIN
(SELECT A, C, count(*)
FROM T
GROUP BY A, C
HAVING count(*) >=2
) dupl
on T.A = dupl.A and T.C = dupl.C
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.