查询协助选择子选择

时间:2019-04-16 03:50:44

标签: mysql

我有一个表locations,其中有一个rating double列和一个state varchar列。我还有一个reviews表,该表具有一列locid,该列将(记录)审查记录与locations表列id

连接(外键)

我目前有此查询,该查询基于具有rating >= 3.5a state of FL的5个随机俱乐部

select * 
  from locations 
 where rating > 3.5 
   and state='FL' 
group by name 
order by rand() 
limit 5

我现在需要针对5个位置记录中的每一个,获取上述查询生成的1条评论。需要警告的是,我需要确保所选位置实际上在评论表中至少有一条记录。

因此最终查询将具有上面的位置查询,并确认评论表中存在一条记录,然后我针对评论进行后续查询

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表中可以有多个条目吗?