簡體   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