我无法理解条件连接的行为。这是一个注释表,其中有两种类型的用户。如果user_type_id = 1,则数据应来自admins表;如果user_type_id = 2,则数据应来自users表。

mysql - mysql加入条件行为-LMLPHP

因此,我将查询编写如下:

 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


结果如下:

mysql - mysql加入条件行为-LMLPHP

我的问题是为什么(在结果集中)第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/

10-10 08:01