本人开发一个移动的项目,功能是分配一些电路。在一个数据表(sql server)里通过通过电路号自关联形成A,B局。电路号,是在分配电路提交后,才生成的。而在分配之前是为通一为空的。
我在做分配电路的时候(还没有电路号),如何在数据表里不显示的重复的记录。另局端是不相同的字段。
比如说,数据库里面有两个记录,record1,record2.那么在inner join on 电路号的时候,就生成两条记录,record1---record2,record2---record1.而我现在只要一条记录recrecord1---record2,or record2---record1.请高手指点。在线等待!
我在做分配电路的时候(还没有电路号),如何在数据表里不显示的重复的记录。另局端是不相同的字段。
比如说,数据库里面有两个记录,record1,record2.那么在inner join on 电路号的时候,就生成两条记录,record1---record2,record2---record1.而我现在只要一条记录recrecord1---record2,or record2---record1.请高手指点。在线等待!
insert @A select 1,'电路1'
insert @A select 1,'电路2'--是笛卡尔积,4条不是2条
select * from @A a inner join @A b
on a.电路号=b.电路号
/*
1 电路1 1 电路1
1 电路1 1 电路2
1 电路2 1 电路1
1 电路2 1 电路2
*/--这才是两条
select * from @A a inner join @A b
on a.电路号=b.电路号
where a.电路<>b.电路
/*
1 电路1 1 电路2
1 电路2 1 电路1
*/--这是1条
select * from @A a inner join @A b
on a.电路号=b.电路号
where a.电路<b.电路
/*
1 电路1 1 电路2
*/--这也是1条
select * from @A a inner join @A b
on a.电路号=b.电路号
where a.电路>b.电路
/*
1 电路2 1 电路1
*/
record1---record2,record2---record1.而我现在只要一条记录recrecord1---record2,or record2---record1.请高手指点。
-----------------
ELEC_LINE_NUM 是电路号? NULL?
declare @A table(KID int,PF varchar(2),COLT int,SIZET varchar(1),QUANTITY int,sh int)
insert @A
select 1,'AA',51,'M',20,1 union all
select 2,'AA',51,'M',20,0 union all
select 3,'AA',51,'M',40,1 union all
select 4,'AA',51,'M',40,1
select * from @a a where kid=(select top 1 kid from @a b where a.pf=b.pf and a.sizet=b.sizet order by newid())
/*
(所影响的行数为 4 行)KID PF COLT SIZET QUANTITY sh
----------- ---- ----------- ----- ----------- -----------
2 AA 51 M 20 0(所影响的行数为 1 行)
*/