我有两个表:opensalesorder
和 items
。
我想根据 item_number 从两个表中检索数据,它在下面的查询中工作正常。 (使用内连接)
SELECT opensalesorder.so_number,items.VendorName,opensalesorder.item_number
FROM `opensalesorder`
INNER JOIN items on opensalesorder.item_number = items.ItemName
WHERE items.ItemType = 'Stock' and opensalesorder.status NOT LIKE 'on po'
GROUP BY opensalesorder.item_number
但我也想要“items”表中的所有行,即使没有从 opensalesorder 和 items 中找到 ItemName 的任何匹配项。
但是使用下面的查询似乎对我不起作用。
SELECT opensalesorder.so_number,items.VendorName,opensalesorder.item_number
FROM `opensalesorder`
RIGHT JOIN items on opensalesorder.item_number = items.ItemName
WHERE items.ItemType = 'Stock' and opensalesorder.status NOT LIKE 'on po'
GROUP BY opensalesorder.item_number
即使在左侧没有找到匹配项,右连接也会从右表返回结果。
查询是否正确?
谢谢
最佳答案
这是您的查询:
SELECT opensalesorder.so_number,items.VendorName,opensalesorder.item_number
FROM `opensalesorder` right join
items
on opensalesorder.item_number = items.ItemName
WHERE items.ItemType = 'Stock' and opensalesorder.status NOT LIKE 'on po'
group by opensalesorder.item_number;
opensalesorder
上的where
条件是“撤消”右连接
。值 NULL
将导致它失败。
解决办法是把它移到on
子句中:
SELECT opensalesorder.so_number,items.VendorName,opensalesorder.item_number
FROM `opensalesorder` right join
items
on opensalesorder.item_number = items.ItemName and
opensalesorder.status NOT LIKE 'on po'
WHERE items.ItemType = 'Stock'
group by opensalesorder.item_number;
关于mysql - 右连接查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18207802/