好吧,说我有这样的联接查询:
SELECT users.*
FROM users
LEFT JOIN votes ON (users.id = votes.userid)
GROUP BY users.id
HAVING count(votes.id) >= 0
ORDER BY count(votes.id) LIMIT 0,30
从users
获取行,按votes
表中与他们有关系的行数排序。
我的问题:使用像WHERE votes.timestamp BETWEEN date_add(NOW(),INTERVAL -24 HOUR) AND NOW()
这样的WHERE子句的正确方法是什么,这样users
只根据过去24小时内与之建立关系的行数进行排序?
能够这样做是有意义的,我只是不确定在哪里放置它。
答案 0 :(得分:1)
将其添加到ON子句:
LEFT JOIN votes ON (users.id = votes.userid) AND (votes.timestamp BETWEEN date_add(NOW(),INTERVAL -24 HOUR) AND NOW())
如果将条件放在WHERE子句中,则可能会完全消除用户,从而否定了LEFT JOIN的用途。 ON子句不会有这个问题。