mySQL查询左外部联接不显示null
我正试图输出库存表中的所有行以及零件表中的描述。以下是表格: 库存表 零件表 我想要的是让所有人从库存行中输出所有SKU,这些库存行有一个特定的订单号,旁边有SKU的描述。如果库存SKU与零件SKU不匹配,我希望输出为NULL的描述 以下是我现有的查询:mySQL查询左外部联接不显示null,mysql,left-join,Mysql,Left Join,我正试图输出库存表中的所有行以及零件表中的描述。以下是表格: 库存表 零件表 我想要的是让所有人从库存行中输出所有SKU,这些库存行有一个特定的订单号,旁边有SKU的描述。如果库存SKU与零件SKU不匹配,我希望输出为NULL的描述 以下是我现有的查询: SELECT * FROM inventory LEFT OUTER JOIN parts ON inventory.sku = parts.sku AND parts.description IS NULL WHERE orderID = $
SELECT * FROM inventory LEFT OUTER JOIN parts ON inventory.sku = parts.sku AND parts.description IS NULL WHERE orderID = $orderID
请提供帮助。您应该将parts.description为NULL条件移动到where子句,因为在连接右表上的行时,其字段上没有NULL
SELECT *
FROM inventory
LEFT OUTER JOIN
parts
ON inventory.sku = parts.sku
WHERE orderID = $orderID AND
parts.description IS NULL
编辑
更好地阅读您的需求,似乎您想要左表中的所有行,而不管它们是否在右表中匹配。如果是这样的话,你可以完全摆脱这种状况
SELECT *
FROM inventory
LEFT OUTER JOIN
parts
ON inventory.sku = parts.sku
WHERE orderID = $orderID
那是我第一次尝试。在这一行中,我得到的只是带有SKU 11111的行,因为这是唯一有SKU描述的条目。几乎像一个内部连接。第二个似乎应该工作。。。如果未设置SQL FIDLE,则显示问题的示例数据。根据提供的信息,Id表示您有两个问题之一:1一个或两个表中的SKU具有非显示字符,导致没有匹配的记录。2传入的$orderID与任何记录都不匹配。如果没有记录,我将不使用where子句运行查询。如果没有返回记录,则SKU中有非显示字符需要处理。也许可以修剪记录以删除空格?如果您获得记录,那么您传递的$OrderID无效。Likley第二,因为左联接至少应返回库存。