我有table1和table2如下
表1
first_name | last_name | t1_id
表2
T2_id | color | length
Table1可能具有Table2 id中不存在的id值,但有时可能存在。我想写一个查询,给出以下结果: First_name | last_name | t1_id |颜色|长度 如果在table2中不存在id值,结果应该是:
First_name | last_name | t1_id | color | length
-----------------------------------------------
Johan | Mike | 33 | - | -
我的尝试:
SELECT first_name,
last_name,
t1_id,
color,
length
FROM Table1, Table2
WHERE t1_id = t2_id
但是,如果t1_id
的值仅存在于t2_id
中,则会显示结果。
答案 0 :(得分:3)
使用LEFT
join来获取第一个表中的所有行,即使它们的关联在第二个表中不存在
SELECT first_name,
last_name,
t1_id,
color,
length
FROM Table1
LEFT JOIN Table2 ON t1_id = t2_id
如果列为空,您可以使用COALESCE(column,'-')
来显示-
SELECT first_name,
last_name,
t1_id,
COALESCE(color,'-'),
COALESCE(length,'-')
FROM Table1
LEFT JOIN Table2 ON t1_id = t2_id
答案 1 :(得分:2)
使用左连接
SELECT first_name,
last_name,
t1_id,
color,
length
FROM Table1
LEFT JOIN Table2 ON t1_id = t2_id
答案 2 :(得分:1)
如果找不到正确的表数据,那么你可以在这种情况下使用mysql left join 加入
SELECT t1.first_name,
t1.last_name,
t1.t1_id,
t2.color,
t2.length
FROM table1 t1
LEFT JOIN table2 t2
ON t1.t1_id = t2.t2_id;
在这个sql中我使用了别名,但是如果你不想要它那么
SELECT first_name,
last_name,
t1_id,
color,
length
FROM table1
LEFT JOIN table2
ON t1_id = t2_id;
了解更多信息
https://dev.mysql.com/doc/refman/5.7/en/left-join-optimization.html
答案 3 :(得分:1)
您应该使用LEFT JOIN
SELECT *
FROM Table1 LEFT JOIN Table2
ON t1_id = t2_id
答案 4 :(得分:0)
试试这个:
SELECT first_name,
last_name,
t1_id,
color,
length
FROM Table1, Table2
WHERE t1_id = t2_id(+)
此致 Damodar