mysql - 连接表并期望第二个表的结果为空

标签 mysql join

我有两个表正在尝试合并。我希望左表显示所有 EmbroideryID,而右表应该为这些 EmbroideryID 返回 null。但是,我只获得两个表中都存在的 EmbroideryID,这不是我想要的。我想要左表中的所有结果,无论右表是否有结果。

左表:

mysql> SELECT * FROM Embroidery WHERE Customer = 'AAAAAAAA'; +--------------+----------+------------------------ ---+ |刺绣ID |客户|描述 | +--------------+----------+------------------------ ---+ | 1 |啊啊啊啊|刺绣1 | | 2 |啊啊啊啊|刺绣2 | | 3 |啊啊啊啊|刺绣3 | | 4 |啊啊啊啊|刺绣4 | | 5 |啊啊啊啊|刺绣5 | +--------------+----------+------------------------ ---+

右表:

从 EmbroideryForMen 中选择*; +----------+--------------+------------+ |客户|刺绣ID |男士编号 | +----------+--------------+------------+ |啊啊啊啊| 1 | 4 | |啊啊啊啊| 1 | 8 | |啊啊啊啊| 1 | 12 | 12 +----------+--------------+------------+

我期待的是: +--------------+----------+------------------------ ---+------------+ |刺绣ID |客户|描述 |男士编号 | +--------------+----------+------------------------ ---+------------+ | 1 |啊啊啊啊|刺绣1 | 4 | | 1 |啊啊啊啊|刺绣2 | 8 | | 1 |啊啊啊啊|刺绣3 | 12 | 12 | 2 |啊啊啊啊|刺绣4 |空| | 3 |啊啊啊啊|刺绣5 |空 | | 4 |啊啊啊啊|刺绣5 |空 | | 5 |啊啊啊啊|刺绣5 |空 | +--------------+----------+------------------------ ---+------------+

这里还有一个 SQLFiddle,您可以查看: http://sqlfiddle.com/#!2/579bac/3

我想要看到这样的表格的原因是因为用户并非总是会选择一个人来接收刺绣,因此永远不会创建行/记录。我想避免将空记录写入 EmbroideryForMen,但如果需要,我会这样做。

非常感谢任何帮助。

最佳答案

以下是实现它的方法:

m.customer = "AAAAAAAA" 替换为 e.customer = "AAAAAAAA" (因为 m.customer 可能为 null 且 null != "AAAAAAAA")和 删除 AND e.EmbroideryID = 1(以显示所有行)

SELECT * 
FROM Embroidery e 
LEFT JOIN EmbroideryForMen m 
ON e.EmbroideryID = m.EmbroideryID
  AND e.Customer = m.Customer
WHERE e.Customer = "AAAAAAAA";

关于mysql - 连接表并期望第二个表的结果为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303664/

相关文章:

php - PHP中上传限制和发帖限制的上限

php - 将 php foreach 循环存储在字符串中

mysql - 如何关闭索引合并,MySQL

php - 在 codeigniter 中加入两个结果

SQL Server 连接 : Are 'JOIN' Statements 'LEFT OUTER' Associated by Default in SQL Server?

mysql - 计算大型数据库的替代方案

php - 检查尺寸、宽度和高度后上传图片

php - INNER JOIN 不会产生任何行

java - LINQ Join 的 Java 8 Stream API 等效项是什么?

mysql - 在 mysql 连接中添加第四个表