0

好的,假设我有一个这样的连接查询:

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 子句的正确方法是什么WHERE votes.timestamp BETWEEN date_add(NOW(),INTERVAL -24 HOUR) AND NOW()users仅根据过去 24 小时内创建的与其有关系的行数进行排序?

能够做到这一点是有道理的,我只是不确定该放在哪里。

4

1 回答 1

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 子句不会有这个问题。

于 2012-09-10T21:58:33.493 回答