抱歉,我不知道“不完全联接”是否有合适的名称,但请考虑这种查询,它旨在返回每次销售的详细信息:
SELECT a.id, a.productId, b.productDescription FROM Sales a, AdditionalProductData b WHERE a.productId = b.productId;
在这种情况下 AdditionalProductData
并不能保证每个人都会吵架 productId
,但我想为中的每一行返回一个结果 Sales
,如何修改查询以返回 null
或某些默认值,例如在这种情况下“未知”?我想确保未注册产品的销售不被遗漏。
(这是一个稍微做作的例子,表明db中存在问题,但这些问题超出了问题的范围)
2条答案
按热度按时间5jvtdoz21#
使用
OUTER JOIN
:但我想为销售中的每一行返回一个结果
执行表交换:
u3r8eeie2#
不要在句子中使用逗号
FROM
条款。始终使用适当的、明确的、标准的、可读的JOIN
语法。你想要一个
left join
:我猜你真的希望每个产品至少有一行。对于不存在的产品进行销售是没有意义的——至少在大多数数据库中是这样。
上面这些没有意义——只能从一个表中选择。你可能想要这样的东西:
编辑:
如果你真的想要一排
sales
,那么你还想要一个LEFT JOIN
另一个顺序是: