我有四个表,假设它们每个只有一个 id 作为列。
listings
feature
location
l_f_location
作为带有 FK 的连接表listingId
,,featureId
,locationId
我尝试在l_f_location
表中查询给定的一组locationIds
(逻辑与匹配),结果只希望那些匹配所有的列表locationIds
,例如(7 AND 9 AND 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
"
但这会在分组开始时给出错误的计数值。
类似的查询在更简单的联结表上完美运行,例如只有 l_location 与例如“ SELECT id, COUNT(*) as num FROM l_location WHERE locationId IN ( 7, 9, 10) GROUP by listingId HAVING num = 3
”。
Rgds,P.