繁体   English   中英

根据条件加入MySQL表

[英]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

DB-小提琴

谢谢。

  • 由于需要所有用户,因此它应该是连接顺序中的第一个表。
  • 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM