假设我有这两个带有以下记录的表
cliente
id nombre
1 c1
2 c2
3 c3
4 c4
5 c5
tabla2
id_cli dato
1 d1
3 d3
10 d10
如果进行此选择,它会向我们显示表 2 中的客户端
SELECT tabla2.*, cliente.nombre
FROM cliente,tabla2
WHERE id = id_cli
id_cli dato nombre
1 d1 c1
3 d3 c3
但我想要向我展示以下结果
id_cli dato nombre
1 d1 c1
3 d3 c3
10 d10
显示 table2,如果 id 匹配,显示 name 字段
这在sql中可能吗?还是我必须通过代码来做
我认为您正在寻找的是 a
LEFT JOIN
,其中显示了匹配的字段,以及左表中不匹配的字段。如MySQL 手册中所述。它应该工作。指出不匹配的客户字段将显示为
NULL
。请参阅此图像以了解不同类型的
JOIN
图形是如何工作的。更新
可以根据需要有效地
NULL
将字段显示为空白。它不是特别有效,但它可以满足您的需求。代码用于MySQL
. 在MS SQL
中,功能IfNull
更改为IsNull
,如this question中所述。