数据库查询需要帮助

时间:2012-02-17 13:44:16

标签: mysql database

是否可以使用条件限制mysql select查询返回的结果?

例如,我有一个评论表:

  

review_id,member_id,text,date

我想获得最新的10条评论,但是member_id = 123应该只进行一次

这可以通过一次查询实现吗?

1 个答案:

答案 0 :(得分:4)

我对问题的解释:

  • 最近的10条评论
  • 包含最多 1次审核member_id = 123

我将通过以下方式解决这个问题:

  • 从完整评论结果集开始
  • 删除所有member_id = 123 的评论,但最新评论除外
  • 从修改后的结果集中,取最近的10个

以下是查询:

create view newest123 as ( -- this gets the newest review for member_id 123
  select * 
   from reviews 
   where member_id = 123 
   order by date desc limit 1
)

select * 
from (
  select * from newest123
  union
  select *                    -- all the reviews that aren't for member_id 123
    from reviews 
    where member_id != 123) filtered
order by date desc limit 10   -- sort 'em and take the top 10