我试图使用LEFT JOINS查找不同的孤立menu_item记录,然后检查NULL值来确认。下面的查询结果并非真正的孤立。mitem_id是menu_item表的主键,在price_info表中是外键。pinfo_id是price_info表的主键,在orderdetails表中是外键。
它返回一组记录:
为什么它返回的结果不是孤儿?
SELECT DISTINCT mi.mitem_id, descr
FROM menu_item mi
LEFT JOIN price_info pi ON pi.menu_item = mi.mitem_id
LEFT JOIN orderdetails od ON od.price_info = pi.pinfo_id
WHERE od.detail_id IS NULL;
返回的记录之一如下:
+----------+------------------+
| mitem_id | descr |
+----------+------------------+
| 926 | Alameda Pale Ale |
+----------+------------------+
我知道这不是一个孤立节点,因为当我运行查询时:
SELECT od.detail_id
FROM orderdetails od
INNER JOIN price_info pi ON pi.pinfo_id = od.price_info
INNER JOIN menu_item mi ON mi.mitem_id = pi.menu_item
WHERE mi.mitem_id = 926;
它返回一组记录:
+-----------+
| detail_id |
+-----------+
| 142830 |
| 142876 |
| 143394 |
| 143610 |
为什么它返回的结果不是孤儿?