簡體   English   中英

根據另一列中的值選擇一個ID存在多個行的不同記錄

[英]select distinct records where multiple rows exist for one ID based on values in another column

因此,我不確定我的標題是正確的還是誤導性的。 聽起來很簡單,但我無法弄清楚,也找不到很好的例子。

我想從ID不匹配特定代碼的表中選擇唯一ID。 例如我有tableA如下:

表A

ID          Code 
====        ==== 
1            AAA 
1            BBB 
1            CCC 
2            AAA 
2            DDD 
2            EEE 
3            BBB 
3            GGG 
3            HHH

我要返回的唯一結果是ID 3,因為ID 1和ID 2匹配代碼“ AAA”。

我試過了:

SELECT disctinct(ID) from tableA where code <> 'AAA' 

但這會返回ID 1、2和3。我不確定group by是否會起作用,因為我什至都不希望返回ID 1和2。

嘗試使用NOT IN

SELECT ID
FROM TableA
WHERE ID NOT IN(SELECT ID
            FROM TableA
            WHERE CODE='AAA')

IN確定指定的值是否與子查詢或列表中的任何值匹配。 在這里閱讀更多。

說明:

內部查詢會選擇所有ID為CODE=AAA ID。 外部查詢將選擇內部查詢未返回的所有ID。

即,使用給定的數據,內部查詢將返回(1,2)。 外部查詢將選擇不在(1,2)中的ID,這當然是3。

這將返回給定ID的所有行:

select *
from tab as t1
where not exists
  (select * from tab as t2
   where t1.id = t2.id
   and code = 'AAA')

而這只是不含“ AAA”的ID:

select id
from tab
group by id
having count(case when code = 'AAA' then 1 end) = 0

暫無
暫無

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

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