SQL:左连接查询

mee*_*eee 0 mysql left-join

我在形成SQL查询时遇到问题.

表结构:

 TABLE A:
 id     | data_a 
--------|--------
 1      | data1  
 2      | data2   
 3      | data3   

 TABLE B:
  id     | data_b | a_id 
 --------|--------|--------
  1      | data4  | 1
  2      | data5  | 1
  3      | data6  | 2
  4      | data7  | 3
  5      | data8  | 3

 TABLE C:
  id     | data_c | b_id   | x_id   
 --------|--------|--------|--------
  1      | data9  | 1      | 1
  2      | data10 | 2      | 1
  3      | data11 | 3      | 1
  4      | data12 | 1      | 2
  5      | data13 | 4      | 2 
Run Code Online (Sandbox Code Playgroud)

所需输出:

 data_a | data_b | data_c 
--------|--------|--------
 data1  | data4  | data12
 data1  | data5  | 
 data2  | data6  | 
 data3  | data7  | data13
 data3  | data8  | 
Run Code Online (Sandbox Code Playgroud)

目前的sql:

SELECT data_a, data_b, data_c
FROM a 
LEFT JOIN b ON a.id = b.a_id 
LEFT JOIN c ON b.id = c.b_id
WHERE c.x_id = 2 OR c.x_id = null;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴

小智 5

将x_id = 2置于左连接条件中.

SELECT
  data_a, 
  data_b, 
  data_c

FROM
  a LEFT JOIN b ON a.id = b.a_id
    LEFT JOIN c ON b.id = c.b_id and c.x_id=2;
Run Code Online (Sandbox Code Playgroud)