我有四個表,假設他們每個只有一個id作爲列。有多個表的聯結表上的MySQL SELECT查詢
listings
feature
location
l_f_location
與FKS上listingId
,featureId
結合表,locationId
我嘗試查詢l_f_location
表一組給定的locationIds
(邏輯AND匹配)並且希望成爲結果僅列出與所有locationIds
匹配的列表,例如(7和9和10)。
l_f_location
看起來像
listingId featureId locationId
10 5 7
10 7 7
10 8 9
11 4 7
11 8 9
11 9 10
11 12 14
的目標是隻listingId
11在這種情況下檢索 - 匹配該組locationIds
7,9和10
我嘗試下面的查詢
「SELECT id, COUNT(*) as num FROM l_f_locations WHERE locationId IN (7, 9, 10) GROUP by listingId, locationId HAVING num = 3
」
但是這給出錯誤的計數值作爲分組ki cks in。
類似的查詢在更簡單的聯結表上完美工作,例如,只有l_location與例如「SELECT id, COUNT(*) as num FROM l_location WHERE locationId IN (7, 9, 10) GROUP by listingId HAVING num = 3
」。
RGDS, P.
在第一個查詢你爲什麼包括'locationId'的'GROUP BY'子句中? –
我通過listingId和locationId進行分組,以將結果減少到我想按每個listingId計數的結果。 – PMiller
不,我正在尋找一個有7,8,9的listingId。它可能有其他的,但這在這個查詢中很好。 – PMiller