我有两个mysql表users和task\u reg
用户
id name
1 user1
2 user2
3 user3
4 user4
5 user5
6 user6
7 user7
8 user8
9 user9
任务注册
top_id use_id payment
1 1 1
1 2 1
1 4 1
2 3 1
2 5 1
我必须显示所有的用户,也显示他们是否已经支付
这是我的sql命令,但它只显示付费用户
SELECT users.id, users.name, task_reg.payment
FROM task_reg
JOIN users ON users.id = task_reg.use_id
JOIN topics ON topics.id = task_reg.top_id
WHERE topics.id = 1
结果
id name payment
1 user1 1
2 user2 1
4 user4 1
预期结果
id name payment
1 user1 1
2 user2 1
3 user3 0
4 user4 1
5 user5 0
6 user6 0
7 user7 0
8 user8 0
9 user9 1
小提琴
谢谢。
1条答案
按热度按时间kyks70gy1#
因为您需要所有用户,所以它应该是联接顺序中的第一个表。
改变你的想法
Inner join
至Left Join
.Where
现场条件topics.id
应该是联接条件。使用
Coalesce()
函数将付款的值设置为0(因为找不到匹配的行)。尝试: