簡體   English   中英

如何在同一個變量SQL中檢查多個值

[英]How can i check for multiple values in the same variable SQL

因此,基本上,我想返回已訂購某種產品“ p07和p01”的用戶的“ cid”(客戶ID)。

我當前的查詢不起作用,僅當我檢查一個值而不是兩個時才起作用。 但是我需要檢查兩個。 我得到的返回值基本上是一個空白。 我的猜測是,它不知道要使用哪個“ pid”,因此它什么也不返回。

SELECT cid FROM orders 
WHERE pid = 'p07' AND pid = 'p01'

您可以為此目的使用聚合。 沒有一行可以同時具有這兩個值,因此您需要查看它們的組:

SELECT cid
FROM orders 
WHERE pid IN ('p07', 'p01')
GROUP BY cid
HAVING COUNT(DISTINCT pid) = 2;

如果您使用的是Oracle數據庫 ,則可以使用INTERSECT關鍵字來獲取答案。 以下是相同的語法:

(SELECT CID FROM訂單,其中pid ='p07')相交(SELECT cid FROM訂單,其中pid ='p01')。

但是,如果您使用的是MySQL,則此INTERSECT關鍵字將不起作用。

以下是MySql數據庫的解決方案:

SELECT t1.cid from((SELECT DISTINCT cid FROM order from pid ='p07')UNION ALL(SELECT DISTINCT cid FROM order from pid ='p01'))AS t1 GROUP BY cid HAVING count(*)> = 2;

如果要在Oracle數據庫中使用上述查詢,則語法會有一點變化。 以下是相同的語法:

SELECT t1.cid from((SELECT DISTINCT cid FROM order from pid ='p07')UNION ALL(SELECT DISTINCT cid FROM order from pid ='p01'))t1 GROUP BY cid HAVING count(*)> = 2

暫無
暫無

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

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