[英]SQL Selecting rows with multiple values
我有這兩個表:
表SW_ITEM
:
ID SWID ITEM_ID
1 1 99
2 2 99
3 5 99
4 2 100
5 1 100
6 1 101
7 2 102
表ITEM
:
ID FILENAME
99 abc
100 def
101 geh
102 ijk
列ITEM_ID
是表ITEM
的列ID
的外鍵。
所以我想要所有SWID為“1”和“2”的文件名(即ITEMID 99和100,所以他們的文件名是“abc”和“def”)
在這里我不得不說ITEM_ID
有可能有多個具有相同SWID的條目,所以我不能使用這個SQL:
SELECT ITEM_ID FROM SW_ITEM
WHERE SWID IN (1,2)
GROUP BY ITEM_ID
HAVING COUNT(ITEM_ID) = 2
那么有沒有其他可能獲得具有SWID 1和2的所有條目(為每個SWID創建連接也不是一個選項 - 因為有很多條目它會非常慢)
親切的問候
您需要在COUNT
使用DISTINCT
並計算SWID
而不是ITEM_ID
:
SELECT ITEM_ID FROM SW_ITEM
WHERE SWID IN (1,2)
GROUP BY ITEM_ID
HAVING COUNT(DISTINCT SWID) = 2;
請查看此演示 。
要檢索所有文件名,請嘗試:
SELECT ITEM_ID, FILENAME
FROM ITEM JOIN SW_ITEM ON ITEM.ID = SW_ITEM.ITEM_ID
WHERE SWID IN (1,2)
GROUP BY ITEM_ID
HAVING COUNT(DISTINCT SWID) = 2;
我有一個不同的問題,我必須在同一個表中找到一個基於電子郵件的多個條目的人 ,因為上述解決方案對我不起作用。 您可以嘗試使用以下內容,
SELECT person_id,
(ROW_NUMBER () OVER (PARTITION BY pers_email ORDER BY pers_name) person_count
from pers_table
WHERE person_count > 2;
試試這個希望它有效:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.