[英]Filter one-to-many relationship by multiple values
這一定是很平常的事情,但是我沒有運氣谷歌搜索。
我有一個類別表:
Table A
catid | text
1 | Category A
2 | Category B
3 | Category C
然后將此表連接到一張地圖,該地圖可跟蹤照片所在的類別
Table B
catid | photoid
1 | 1
2 | 1
1 | 2
3 | 3
我需要做的是過濾查詢,以便僅返回選擇的每個類別中的照片。 例如:
謝謝你提供的所有幫助。
-Matt
最簡單的方法之一是:
SELECT
*
FROM
B
WHERE
B.catid IN (1, 2)
GROUP BY
B.photoid
HAVING
COUNT(B.photoid) = 2
要匹配3個類別,您需要執行以下操作:
SELECT
*
FROM
B
WHERE
B.catid IN (1, 2, 3)
GROUP BY
B.photoid
HAVING
COUNT(B.photoid) = 3
您也可以多次連接同一張表。 或執行子查詢。 我將測試幾種不同的方法,以查看哪種方法對您的數據集執行最快。
使用不存在子查詢
Select distinct photoid
From photoCategory pc
Where Not Exists
(Select * From category c
Where catId <> pc.catId)
答案在這里...
https://stackoverflow.com/a/17026879/520857
很抱歉剛才的誤導性回答
順便說一句,您要嘗試的操作稱為INTERSECT,MySQL本身並不支持INTERSECT,因此鏈接中的方法很奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.