【发布时间】:2021-03-29 20:18:30
【问题描述】:
我有一个包含 3 个字段的表格 Invoices:
发票产品代码 发票数量 发票价格
InvoiceProductCode 可以为空,但如果它不为空,我希望它用 Products 表中的值填充。
- 产品表- 产品代码 产品名称
示例 2 行数据
InvoiceProductCode InvoiceQuantity InvoicePrice
3 2 5
1 10
SELECT InvoiceProductCode, InvoiceQuantity, InvoicePrice from Invoices
INNER JOIN Products ON InvoiceProductCode = Products.ProductCode
WHERE InvoiceNumber=3
即使第二行的 InvoiceProductCode 为空(或零),我也希望返回两行,只是只有第一行有 ProductName;第二行的 ProductName 将为空。我想在不使用查找表的情况下在 SQL 中执行此操作。
所以最终结果应该是 2 行:
InvoiceProductCode ProductName Invoice Quantity Invoice Price
3 Laptop 2 5
0 1 10
而不仅仅是 1 行:
InvoiceProductCode ProductName Invoice Quantity Invoice Price
3 Laptop 2 5
如何构建查询? ProductCode 上的 INNER JOIN 只会给我 1 行 - 具有非空 ProductCode 的行,但没有 ProductCode 的行被忽略。
有什么建议吗?
谢谢。
【问题讨论】:
-
查看:LEFT JOIN - 返回第一个表中的所有行,并且只返回第二个表中存在的行。
-
编辑您的问题并显示您正在使用的查询。同时标记数据库。
-
@Brad 可能是我的错误......由于某种原因,Left Join 早些时候没有工作。谢谢!
-
@GordonLinoff 谢谢。我刚刚编辑了它。 mysql.