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

私の質問:過去 24 時間に作成された関係を持つ行の数のみに基づいて並べ替えWHERE votes.timestamp BETWEEN date_add(NOW(),INTERVAL -24 HOUR) AND NOW()られるような WHERE 句を使用する適切な方法は何ですか?users

これができるのは理にかなっていますが、どこに置くべきか本当にわかりません。

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 に答える