簡體   English   中英

SQL:如何選擇已訂購多個項目的客戶

[英]SQL: how to select customers who have ordered multiple items

這是一些示例數據:

ID Item 

1 A    
1 A 
1 B 
2 A 
2 A    
3 A 
3 A 
3 A

問題:我試圖編寫代碼,以便選擇的唯一記錄是ID為1的客戶(即同時擁有產品A和B的客戶)的記錄。 因此結果應如下所示:

1 A    
1 A    
1 B

我已經嘗試了很多不同的方法,但是我陷入了困境。 我嘗試了自我聯接,但沒有產生我想要的東西:

SELECT a.id, a.item
FROM table1 a Join table1 b on a.id=b.id
WHERE upper(a.item) = 'A'
AND upper(b.item) = 'B';

這將給我合適的客戶(即客戶1),但不會提取所有3條記錄。 它只給出1行。

最接近的類似問題是在此處輸入鏈接描述

由於您想查看哪些用戶符合特定條件並獲取有關這些用戶的所有信息,因此需要一個嵌套查詢:

SELECT id,item FROM table1 WHERE id IN(
    SELECT a.id
    FROM table1 a Join table1 b on a.id=b.id
    WHERE upper(a.item) = 'A'
    AND upper(b.item) = 'B'
)

我接受了您的工作查詢,並在WHERE子句中使用了它來進行更通用的查詢-應該為您解決問題

您可以將查詢用作子選擇,以獲取pid,然后輸出所有pids行。 像這樣:

SELECT id, item 
  FROM table1 
 WHERE id IN (SELECT a.id
                FROM table1 a 
                JOIN table1 b 
                  ON a.id=b.id
               WHERE UPPER(a.item) = 'A'
                 AND UPPER(b.item) = 'B')

這是您要找的東西嗎? 還是我不明白你的問題。

SELECT a.pid, a.mname
FROM meds a 
WHERE a.pid = 1

暫無
暫無

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

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