我有一个表locations
,其中有一个rating double
列和一个state varchar
列。我还有一个reviews
表,该表具有一列locid
,该列将(记录)审查记录与locations
表列id
我目前有此查询,该查询基于具有rating >= 3.5
和a state of FL
的5个随机俱乐部
select *
from locations
where rating > 3.5
and state='FL'
group by name
order by rand()
limit 5
我现在需要针对5个位置记录中的每一个,获取上述查询生成的1条评论。需要警告的是,我需要确保所选位置实际上在评论表中至少有一条记录。
因此最终查询将具有上面的位置查询,并确认评论表中存在一条记录,然后我针对评论进行后续查询
答案 0 :(得分:0)
您应该能够使用EXISTS
子句检查评论是否存在,然后将这些结果JOIN
放到reviews
表中以获取实际的评论:>
SELECT *
FROM (SELECT *
FROM locations l
WHERE rating > 3.5
AND state = 'FL'
AND EXISTS (SELECT * FROM reviews r WHERE r.locid = l.id)
ORDER BY RAND()
LIMIT 5
) loc
JOIN reviews r
ON r.locid = loc.id
我不确定为什么在查询中有一个GROUP BY
子句?一个地点在locations
表中可以有多个条目吗?