簡體   English   中英

在表中選擇具有特定列的相同數據的兩行

[英]Selecting two rows in a table which have the same data for a particular column

表(契約)中有一列稱為服務位置。 我必須顯示服務位置與表中任何其他行匹配的所有行。

    Table Example

 A    B    C
 1    2    3
 3    2    1
 2    5    3

我需要一個查詢,其中第一行和第二行將根據第二列的比較返回。 我假設我需要使用HAVING COUNT( B )> 1

我想出了這個

SELECT  `contract_number` 
FROM  `contracts` 
WHERE  `import_id` =  'fe508764-54a9-41f7-b36e-50ebfd95971b'
GROUP BY  `service_location_id` 
HAVING COUNT(`service_location_id` ) >1  

但它並沒有產生我真正需要的東西。

Having會做,但你需要使用它像這樣

SELECT  *
FROM    Contracts
        INNER JOIN
        (   SELECT  B
            FROM    Contracts
            GROUP BY B
            HAVING COUNT(*) > 1 -- MORE THAN ONE ROW WITH THE SAME VALUE
        ) dupe
            ON dupe.B = Contracts.B

根據您的索引,您可能會發現自聯接表現更好:

SELECT  DISTINCT t1.*
FROM    contracts t1
        INNER JOIN contract` t2
            ON t1.B = t2.B
            AND t1.A <> t2.A

SELECT * FROM sheet1 WHERE C IN(

SELECT C FROM sheet1 GROUP BY C HAVING COUNT( C )> 1)ORDER BY C LIMIT 0,5000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM