表2如何和表1连接后,实现我想要的效果
表1:
id time bid cell carrierpos carrierid
124147 2006-3-1 0:00 2 XN001A 0 TH60271736
124153 2006-3-1 0:00 2 XN001A 0 null
124148 2006-3-1 0:00 2 XN001A 1 TH60271737
124149 2006-3-1 0:00 2 XN001A 2 TH60284577
124150 2006-3-1 0:00 2 XN001A 3 TH60271792
124151 2006-3-1 0:00 2 XN001A 4 TH60284621
124152 2006-3-1 0:00 2 XN001A 5 TH60514670
124422 2006-3-1 0:00 2 XN001B 0 TH60283951
124423 2006-3-1 0:00 2 XN001B 1 TH60271629
124154 2006-3-1 0:00 2 XN001B 2 null
124424 2006-3-1 0:00 2 XN001B 2 TH60284586
124155 2006-3-1 0:00 2 XN001B 3 null
124425 2006-3-1 0:00 2 XN001B 3 TH60284579
124426 2006-3-1 0:00 2 XN001B 4 TH60284635
124427 2006-3-1 0:00 2 XN001B 5 TH60305716
表2:
cell carrierpos carrierid
XN001A 0 TH60271736
XN001A 1 TH60271737
XN001A 2 TH60284577
XN001A 3 TH60271792
XN001A 4 TH60284621
XN001A 5 TH60514670
XN001B 0 TH60283951
XN001B 1 TH60271629
XN001B 2 TH60284586
XN001B 3 TH60284579
XN001B 4 TH60284635
XN001B 5 TH60305716
表2是从表1中查询得到的结果,现在我想把表2和表1关联,得到下面的结果
去掉同一cell,同一carrierpos,且carrierid是空的值
id time bid cell carrierpos carrierid
124147 2006-3-1 0:00 2 XN001A 0 TH60271736
124148 2006-3-1 0:00 2 XN001A 1 TH60271737
124149 2006-3-1 0:00 2 XN001A 2 TH60284577
124150 2006-3-1 0:00 2 XN001A 3 TH60271792
124151 2006-3-1 0:00 2 XN001A 4 TH60284621
124152 2006-3-1 0:00 2 XN001A 5 TH60514670
124422 2006-3-1 0:00 2 XN001B 0 TH60283951
124423 2006-3-1 0:00 2 XN001B 1 TH60271629
124424 2006-3-1 0:00 2 XN001B 2 TH60284586
124425 2006-3-1 0:00 2 XN001B 3 TH60284579
124426 2006-3-1 0:00 2 XN001B 4 TH60284635
124427 2006-3-1 0:00 2 XN001B 5 TH60305716
问题点数:50、回复次数:9Top
1 楼scmail81(琳·风の狼(修罗))回复于 2006-03-02 20:47:39 得分 5
??
select * from 表1 where carrierid is not nullTop
2 楼happyflystone(无枪的狙击手)回复于 2006-03-02 21:44:11 得分 5
select *
from 表1 a
where not exists(
select 1 from 表1 b,表2 c where b.cell = c.cell and b.carrierid = c.carrierid and b.carrierid is null)Top
3 楼ReViSion(和尚)回复于 2006-03-02 23:20:52 得分 5
表2是表1查询之后得到的结果
----------------------------------
不知道是什么查询条件得到的结果
按照楼主提供的数据,
select * from 表1 where carrierid is not null
好像就可以达到目的Top
4 楼Rubi(浪迹Csdn各个板块!MS-Borland-IBM-SUN-水区-在去哪里呢?)回复于 2006-03-03 10:30:42 得分 0
是这样的,表2是满足time,bid,cell,carrierpos相等,然后carrierid有一个为空的,我就删除哪个为空的,留下不为空的就是表二的数据,另外一种情况是允许carrierid为空,但是前提条件是前面的time,bid,cell,carrierpos没有相等的数据。
表1:
id time bid cell carrierpos carrierid
124147 -- 2006-3-1 0:00 --2 -- XN001A -- 0 -- TH60271736
124153 -- 2006-3-1 0:00 --2 -- XN001A -- 0 -- null
124148 -- 2006-3-1 0:00 --2 -- XN001A -- 1 -- TH60271737
比如上面的数据第2行与第三行的time,bid,cell,carrierpos相等,但是carrierid为空,所以我就要删除第二行的这个无效数据,那么还有如下情况,比如
124422 2006-3-1 0:00 2 XN001B 0 TH60283951
124423 2006-3-1 0:00 2 XN001B 1 TH60271629
124154 2006-3-1 0:00 2 XN001B 2 null
124424 2006-3-1 0:00 2 XN001B 3 TH60284586
第三行的carrierid为空,但是他和第四列time,bid,cell,carrierpos不相等,所以就是有效数据,我现在就是想把表一中的无效数据删除,得到一个最终表,不是表二Top
5 楼Rubi(浪迹Csdn各个板块!MS-Borland-IBM-SUN-水区-在去哪里呢?)回复于 2006-03-03 13:14:41 得分 0
自己在up下Top
6 楼Rubi(浪迹Csdn各个板块!MS-Borland-IBM-SUN-水区-在去哪里呢?)回复于 2006-03-03 23:09:36 得分 0
兄弟们帮帮忙阿Top
7 楼mm2love2zz(never stop.)回复于 2006-03-04 00:30:01 得分 20
找个测试库,试试:
delete from tb1 a
where exsites(select 1 from tb1 b
where b.time=a.time and b.bid=a.bid and b.cell=a.cell and b.carrierpod=a.carrierpod
and b.carrierid='null')Top
8 楼Rubi(浪迹Csdn各个板块!MS-Borland-IBM-SUN-水区-在去哪里呢?)回复于 2006-03-04 12:12:16 得分 0
好的,我看看先Top
9 楼wgsasd311(自强不息)回复于 2006-03-04 12:35:18 得分 15
delete a from tb a
where
carrierid IS null
AND
exists
(select 1 from tb
where [time]=a.[time] and
bid=a.bid and
cell=a.cell and
carrierpod=a.carrierpod
)Top




