我正在寻找一个查询来返回一个名为MRP
的销售表中的列。该表有一些错误的MRP值。在Purchase
表中,一切都井然有序,并且有正确的MRP值。需要一个查询来返回销售表中的值,该值在单个项的购买表中没有匹配的MRP。
样品购买表
Iid CP QUANTITY MRP PRICE
1 62.8 240 89 78
1 57.5 240 89 79
1 60.15 480 89 79
2 60.14 720 89 79
2 60.15 480 89 79
此处的第二行样本销售表具有错误的MRP
iid CP QTY MRP PRICE
1 57.5 240 89 77
1 57.5 40 81 79
1 57.5 40 89 79
1 62.8 40 89 72
1 62.8 40 89 78
需要一个查询来显示销售表中的ID,其中当不在相同项目的购买列表中时,错误地采用了ItemID iid
和MRP
先感谢您。
您可以使用NOT IN子句来测试不存在的值。在您的情况下,只需从购买表中获取“NOT IN”值:
SELECT MRP
FROM SalesTable
WHERE Iid NOT IN (SELECT IId FROM PurchaseTable)
这将返回sales表中所有行的MRP字段,其中“Iid”值在PurchaseTable中没有匹配的“Iid”值。根据您的数据库版本,您可能需要将WHERE Iid IS NOT NULL
添加到您的子选择以使用NOT IN。
您还应该能够使用NOT EXISTS
运算符执行相同的操作。
使用not exists()
select *
from sale s
where not exists (
select 1
from purchase p
where p.iid = s.iid
and p.mrp = s.mrp
)
即使:z zxswい
收益:
http://rextester.com/ZICIT13088
+-----+----+-----+-----+-------+
| iid | cp | qty | mrp | price |
+-----+----+-----+-----+-------+
| 1 | 58 | 40 | 81 | 79 |
+-----+----+-----+-----+-------+
这对我有用。感谢提示@ravioli