[英]JOIN MySQL tables based on condition
我有两个MySQL表用户和task_reg
用户
id name
1 user1
2 user2
3 user3
4 user4
5 user5
6 user6
7 user7
8 user8
9 user9
task_reg
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
谢谢。
Inner join
Left Join
更改为Left Join
。 Where
在条件topics.id
应该是一个连接条件。 Coalesce()
函数将付款金额设置为0(因为找不到匹配的行)。 尝试:
SELECT users.id, users.name, COALESCE(task_reg.payment, 0) AS payment
FROM users
LEFT JOIN task_reg ON users.id = task_reg.use_id
LEFT JOIN topics ON topics.id = task_reg.top_id AND topics.id = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.