我有两个 tables
,即itemorders和itemdelivered。
项目订单
+-------+---------+--------+
| id | orderid | itemid |
+-------+---------+--------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 2 |
| 5 | 3 | 1 |
| 6 | 3 | 2 |
+-------+---------+--------+
以及
项目已交付
+-------+-------------+--------+
| id | orderId | itemid |
+-------+-------------+--------+
| 1 | 2 | 2 |
| 2 | 3 | 2 |
| 3 | 2 | 1 |
+-------+-------------+--------+
从上面的场景中,我想要所有这些 distinct
其 max
中的orderid table
itemdelivered小于 max
中的orderid table
项目订单。
在上面的例子中,我应该得到itemid1作为结果,因为 max
订单ID为2英寸 table
itemdelivered,这比它的 max
中的医嘱ID table
itemorders是3。
我写了以下内容 query
但它同时给出了项目1和项目2,因为项目2在itemdelivered中没有orderid 1 table
.
SELECT DISTINCT( itemid )
FROM itemorders
WHERE orderid NOT IN (SELECT orderid
FROM itemdelivered)
2条答案
按热度按时间dgiusagp1#
你可以
LEFT JOIN
在两张table之间使用itemid
,和GROUP BY
上itemid
.最终使用
HAVING
只考虑那些itemid
值,其中MAX(itemdelivered.orderid) < MAX(itemorders.orderid)
db fiddle视图结果
kxxlusnw2#
好的,设法编写一个查询来提供所需的输出。