怎么做这种查询?

时间:2009-08-07 19:29:44

标签: sql

用户可以暂停。我想选择用户和他的暂停,但我只想要 suspensions.suspended_date>的暂停。现在()即可。我想要回报用户。

这听起来像是左连接,但是:

SELECT *
FROM users
LEFT JOIN suspensions ON suspensions.user_id=users.id
WHERE suspensions.suspended_date > now()

如果他们有停顿会工作正常,但如果他们没有停止会导致麻烦,因为where子句总是会失败。

如何用一个查询来写这个?

3 个答案:

答案 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