用户可以暂停。我想选择用户和他的暂停,但我只想要 suspensions.suspended_date>的暂停。现在()即可。我想要回报用户。
这听起来像是左连接,但是:
SELECT *
FROM users
LEFT JOIN suspensions ON suspensions.user_id=users.id
WHERE suspensions.suspended_date > now()
如果他们有停顿会工作正常,但如果他们没有停止会导致麻烦,因为where子句总是会失败。
如何用一个查询来写这个?
答案 0 :(得分:3)
您可以尝试将过滤器从WHERE移动到JOIN语句
SELECT *
FROM users
LEFT JOIN suspensions
ON suspensions.user_id=users.id AND suspensions.suspended_date > now()
答案 1 :(得分:0)
SELECT *
FROM users
LEFT JOIN suspensions ON suspensions.user_id=users.id
WHERE suspensions.suspended_date > now() or suspensions.suspended_date is null
应该这样做。
答案 2 :(得分:0)
试试这个:
SELECT *
FROM users
LEFT JOIN suspensions ON suspensions.user_id=users.id
WHERE suspensions.suspended_date > now() or suspensions.user is null