我希望你可以帮忙解决这个问题,我在DB2,OR和OS中有两个车辆表,或者是将要交付的车辆的订单,OS是那些已经售出的车辆,想要查询OR表中的所有订单,但不是OS表中取消的订单,我根据状态识别取消的订单(' 8'),我试过这个查询,但订单我得到的只是操作系统表中的那些,并非所有的命令都在操作系统表中,我尝试使用OUTER JOIN,但这不是我预期的结果。
SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM
TABLE.OR LEFT OUTER JOIN TABLE.OS ON OR.OBNO=OS.OBNO
WHERE OS.SLCD NOT IN ('8')
这只能获取OS表中的所有订单并排除OR表中的订单(OR表没有SLCD状态,我想排除OS表中具有8状态的所有订单但是保留那些不在OS表中的那些。)
这个结果是一样的。
SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM
TABLE.OR LEFT OUTER JOIN TABLE.OS ON OR.OBNO=OS.OBNO AND OS.SLCD NOT IN ('8')
我希望有人可以帮助我。非常感谢
答案 0 :(得分:0)
我认为还有另一种检索这些数据的方法:
SELECT OR.OBNO, OR.ORSC, OS.SCLD
FROM TABLE.OR WHERE NOT EXISTS
(SELECT 1 FROM TABLE.OS WHERE OR.OBNO=OS.OBNO AND OS.SLCD = '8')