Sql 查询其他查询输出中未包含的所有剩余结果
我在日志表中有订单,每个订单id可以有多行,状态不同。我想返回一个包含附带事件但状态不为“完成”的订单列表。该表如下所示:Sql 查询其他查询输出中未包含的所有剩余结果,sql,oracle,Sql,Oracle,我在日志表中有订单,每个订单id可以有多行,状态不同。我想返回一个包含附带事件但状态不为“完成”的订单列表。该表如下所示: order_number | event | status | capture_id ------------------------------------------- 1234 | fallout |complete | 95 1234 | fallout |in progress| 95 1234 | fallout
order_number | event | status | capture_id
-------------------------------------------
1234 | fallout |complete | 95
1234 | fallout |in progress| 95
1234 | fallout |Assigned| 95
1234 | task | |
2255 | fallout |in progress| 10
2255 | fallout |Assigned| 10
2255 | task | |
在此表中,查询将返回订单号2255
我根据capture\u id查询了一个列表,因为capture\u id可以对同一订单号有多个值。与沉降物相对应的捕获id在整个订单中保持不变,但在本例中为95和10
SELECT* FROM RECORDS
WHERE event = 'fallout' and status LIKE 'complete'
order by created desc;
^返回所有已完成的行
SELECT * FROM RECORDS
WHERE capture_id NOT IN
(SELECT capture_id FROM records
WHERE event = 'fallout' and status LIKE 'complete')
order by created desc;
^这是我试图查询当前未返回任何内容的capture_id的其余部分
^这是我试图查询当前未返回任何内容的capture_id的其余部分
使用正确的空处理修复代码
SELECT *
FROM RECORDS
WHERE capture_id NOT IN
(SELECT capture_id FROM records
WHERE event = 'fallout' and status LIKE 'complete' and capture_id IS NOT NULL)
order by created desc;
更多信息:我认为第一个不起作用,因为“complete”也用于其他也会生成capture\u id的事件。我将尝试您的代码修复。@RanchDubois OK,我假设capture\u id在您的表中是唯一的。第二种方法肯定会起作用。感谢这个代码修复程序,所以查询返回了我需要的顺序,但没有关于辐射事件的完整状态,但我不知道为什么event='fallout'没有过滤掉其他结果,因为我仍然在将其他事件与结果混合,只是辐射事件。不管怎样,我刚刚在结果上添加了另一个AND子句,并对其进行了排序。非常感谢。