繁体   English   中英

使用SQL查询查找多列相同的行

[英]find rows that multiple columns are identical using SQL query

我必须编写查询以从表T中获取结果集

其中表T定义为

  • 首要的关键
  • A栏
  • B栏
  • C栏

我需要获取在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM