对比校验的问题
如 有 A B 2张表
A 表中有字段 dm,jc
B 表中有字段 dm,km,sz
其中 km字段是单选项 km
求 存在 A 中的记录,而在 B 表中 km 字段 不等于 1 或 2 或 3的记录。
提出缺少 了 km字段中的哪个 数值。
A 表数据如下:
dm jc
001 上
002 下
003 上
004 下
B 表数据如下:
dm km
001 1
001 2
002 1
002 2
002 3
003 3
那么 提出的数据应该是:
001 3
003 1
003 2
坐等大大
[解决办法]
- SQL code
declare @A table (dm varchar(3),jc varchar(2))insert into @Aselect '001','上' union allselect '002','下' union allselect '003','上' union allselect '004','下'declare @B table (dm varchar(3),km int)insert into @Bselect '001',1 union allselect '001',2 union allselect '002',1 union allselect '002',2 union allselect '002',3 union allselect '003',3select d.dm,d.col from (select * from @A a cross join (select 1 as col union select 2 union select 3)cwhere a.dm in (select dm from @B))dfull join @B b on d.col=b.km and d.dm=b.dm where b.km is null order by 1/*dm col---- -----------001 3003 1003 2*/