这样的过滤语句该怎么写啊,求助!!!!

[复制链接]
查看11 | 回复5 | 2011-11-1 16:20:28 | 显示全部楼层 |阅读模式
本帖最后由 zxwzxw 于 2013-3-18 21:25 编辑
表A中有几百万行数据。记录如下:
TEST_NO
ID_NO
NAME
CA_TN
1
4769
张亮
A
2
9814
王飞宇 B
3
4769
孙鹏
A
4
5492 欧阳霞 C
5
4164 张迪
D
..........................
9919
4164 王宇
A
...........................
12457
9814
令狐一笑 A
想要SELECTID_NO,NAME,CA_TN FROM A,
条件是ID_NO要保证唯一,其他2个字段跟着ID_NO走。
这样的语句怎么写 ?谢谢


回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
不考虑效率的话:

select a.ID_NO,a.NAME,a.CA_TN
from a,
(select id_no,count(test_no) from a having count(test_no)=1 group by id_no) b
where b.id_no = a.id_no
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
zixinsu 发表于 2013-3-18 21:43
不考虑效率的话:
select a.ID_NO,a.NAME,a.CA_TN
from a,

用SELECT DISTINCT ID_NO FROM A 得出ID_NO真正的行数。
用你的语句得出另外一个行数,但是你的语句得出的行数少了100多个。
这是不行的。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
delete from xxx
where rowid in (
select r1 from
(
select rowid as r1
ROW_NUMBER () over (partition by ID_NO ) x from xxx)
where x>1)
这个应该比较快
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
zxwzxw 发表于 2013-3-19 08:30
用SELECT DISTINCT ID_NO FROM A 得出ID_NO真正的行数。
用你的语句得出另外一个行数,但是你的语句得 ...

你的意思是要 diatinct ID_NUM 啊。。。那 name不同需要group by 了。。。
回复

使用道具 举报

千问 | 2011-11-1 16:20:28 | 显示全部楼层
需要创建两个临时表然后写语句比较筛选过滤。谢谢两位。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行