我有两个表:users
和 userlogs
table1
----------
id | name
----------
1 | A
2 | B
3 | C
4 | D
table2
----------
user_id | date
----------
1 | 2015-12-17
2 | 2015-12-18
3 | 2015-12-19
4 | 2015-12-20
如果我对所选日期执行 LEFT JOIN,它只会提供表 2 中存在的数据。
SELECT r.user_id, count(r.user_id) as count
FROM table1 a LEFT OUTER JOIN table2 r ON ( r.user_id = a.id )
WHERE r.created_at BETWEEN '2015-12-17' AND '2015-12-19'
GROUP BY a.id
我得到以下信息
Result
----------
user_id | count
----------
1 | 1
2 | 1
3 | 1
我需要如下内容:
Result
----------
user_id | count
----------
1 | 1
2 | 1
3 | 1
4 | 0
我尝试了很多不同的方法,但都没有成功。
最佳答案
尝试将过滤条件移动到左连接中。
SELECT
a.id,
count(r.user_id) as count
FROM table1 a
LEFT OUTER JOIN table2 r ON r.user_id = a.id AND
r.created_at BETWEEN '2015-12-17' AND '2015-12-19'
GROUP BY a.id
关于mysql - SQL 查询左连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34921056/