我无法理解条件连接的行为。这是一个注释表,其中有两种类型的用户。如果user_type_id = 1,则数据应来自admins表;如果user_type_id = 2,则数据应来自users表。
因此,我将查询编写如下:
select a.name as admin_name, concat(u.first_name, ' ', u.last_name) as user_name, ptc.*
from project_task_comments ptc
left join admins a on a.id= ptc.user_id and ptc.user_type_id=1
left join users u on u.id=ptc.user_id and ptc.user_type_id=2
and ptc.id=1
结果如下:
我的问题是为什么(在结果集中)第3和第5行的admin_name和user_name为null?我想念什么吗?
管理员表:
+----+----------------+
| id | name |
+----+----------------+
| 1 | ADMIN John Doe |
+----+----------------+
用户表:
+----+------------+-----------+
| id | first_name | last_name |
+----+------------+-----------+
| 1 | User | Alice |
+----+------------+-----------+
最佳答案
根据您的数据,有3条记录“ ptc.user_type_id = 2”,1。ptc.id = 1 2. ptc.id = 3 3. ptc.id = 5在您的查询中,您已经提到要放入属于第一个实例的记录(即ptc.id = 1)。
因此,如果要全部使用三个,则需要使用以下查询。
SELECT a.name as admin_name, concat(u.first_name, ' ', u.last_name) as user_name, ptc.*
FROM project_task_comments ptc
left join admins a on a.id= ptc.user_id and ptc.user_type_id=1
left join users u on u.id=ptc.user_id and ptc.user_type_id=2
关于mysql - mysql加入条件行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55102567/