从2个表中按日期排序

时间:2013-01-11 17:48:27

标签: mysql select

我有两个表连接在一起,每个表都有一个添加项目的日期。我想要做的是使用两个表中类似论坛的日期列按最后一个活动排序行。有人问了一个问题,问题是在董事会的最高层,因为新的问题被问到他们会被放到董事会的最高层。问题向下移动,一旦有人发布了答案,它就会回到董事会的最高层。如何制定查询来执行此类操作?以下是我到目前为止的情况:

select question, question_id, count(a.answer_id) total
from questions q
left join answers a using(question_id)
group by q.question_id order by question_id desc limit 10

1 个答案:

答案 0 :(得分:2)

如果我错了,请纠正我,但是如果没有答案,你只需要使用问题中的日期。

在这种情况下:

order by COALESCE(a.date, q.date) desc

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

第二个想法,这会导致您的查询失败,因为q.date和a.date不在您的组中。 将q.date添加到组中是可以的,但是将a.date添加到group by会使相同的问题出现的次数与答案相同。

因此,您应该将联接更改为:

left join (select question_id, max(date) as date from answers group by question_id) a
 on a.question_id = q.question_id

然后使用我建议的订单