表与表之间多行对比范围查询不一致的数据内容

fuwuchao 2020-05-05 10:03:48
Table A
ID QTY UP
1 1 1.5
1 100 1.25
2 1 2.5
2 100 2.25

Table B
ID QTY UP
1 56 1.25
1 100 1.25
2 1 2.5
2 123 2.5

请问如何实现查询出来的效果是
ID QTY UP
1 56 1.25
2 123 2.5

这是一个业务应用问题,不用在意ID为什么会重复,可以当做一个SKU,对应的不同售价规则;
表A是定义规则的地方,表B是业务录入的地方,当在表B录入业务数据时,会自动去对比表A的规则,为防止人为修改或其它因素出现的不匹配情况,需要就表B与表A进行一个查询,把不符合表A规则的表B业务数据按行查询显示出来。还望各路大神指教,谢谢。
...全文
94 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nebuung 2020-05-06
  • 打赏
  • 举报
回复
ID不重复的话可以这样,留个mark学习其他大佬的方法
select * from tableb where id not in(
select b.id from tablea a inner join tableb b on a.qty=b.qty and a.up=b.up)
小野马1209 2020-05-06
  • 打赏
  • 举报
回复
--创建临时表
DECLARE @TABLEA TABLE (ID INT,QTY INT ,UP DECIMAL(19,9))
INSERT INTO @TABLEA
SELECT 1,1,1.5 UNION ALL
SELECT 1,100,1.25 UNION ALL
SELECT 2,1,2.5 UNION ALL
SELECT 2,100,2.25

DECLARE @TABLEB TABLE (ID INT,QTY INT ,UP DECIMAL(19,9))
INSERT INTO @TABLEB
SELECT 1,56,1.25 UNION ALL
SELECT 1,100,1.25 UNION ALL
SELECT 2,1,2.5 UNION ALL
SELECT 2,123,2.5

--查询表B不符合表A的数据
SELECT * FROM @TABLEB AS B
WHERE NOT EXISTS(SELECT 1 FROM @TABLEA AS A WHERE B.ID=A.ID AND B.QTY=A.QTY AND B.UP=A.UP)

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧