根据条件加入MySQL表

时间:2018-10-14 10:46:35

标签: mysql join union

我有两个MySQL表 users 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-Fiddle

谢谢。

1 个答案:

答案 0 :(得分:2)

  • 由于需要所有用户,因此它应该是连接顺序中的第一个表。
  • 将您的class ExtendedClock extends Clock { constructor({template, precision = 1000}) { super({template}) this._precision = precision } start() { super.start() this._timer = setInterval(() => this._render(), this._precision) } } 更改为Inner join
  • Left Join上的
  • Where条件应为Join条件。
  • 使用Coalesce()函数将付款金额设置为0(因为找不到匹配的行)。

尝试:

topics.id