gpt4 book ai didi

mysql - 根据条件连接 MySQL 表

转载 作者:行者123 更新时间:2023-11-29 05:52:33 25 4
gpt4 key购买 nike

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

谢谢。

最佳答案

  • 由于您需要所有用户,因此它应该是连接顺序中的第一个表。
  • 将您的 Inner Join 更改为 Left Join
  • topics.id 上的
  • Where 条件应该是一个 Join 条件。
  • 使用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

关于mysql - 根据条件连接 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52801842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com