irr*_*ons 3 mysql sql join inner-join
SELECT orders.* FROM orders JOIN order_rows
ON orders.id = order_rows.order_id
WHERE order_rows.quant <> order_rows.quant_fulfilled
GROUP BY orders.id
ORDER BY orders.id DESC
Run Code Online (Sandbox Code Playgroud)
我需要这个包含没有相应order_row条目的行(这将是一个尚未包含任何项目的订单).似乎必须通过添加ON或WHERE子句来实现此目的吗?
在给定时间只会有几个空订单,所以如果对此的最佳答案会显着降低性能,我会使用单独的查询.但我希望将它们包含在此查询中,以便按order.id和其他查询对它们进行排序.只是不想将查询时间加倍,只包括没有项目的1-3个订单.
我正在使用MySQL.提前感谢任何建议.
只需使用LEFT JOIN而不是JOIN.您将获得所有订单行.
SELECT orders.* FROM orders LEFT JOIN order_rows
ON orders.id = order_rows.order_id
WHERE order_rows.quant IS NULL OR order_rows.quant <> order_rows.quant_fulfilled
GROUP BY orders.id
ORDER BY orders.id DESC
Run Code Online (Sandbox Code Playgroud)