[英]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.