免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3950 | 回复: 12
打印 上一主题 下一主题

求一SQL语句 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-21 16:39 |只看该作者 |倒序浏览
这样一个表:
No 名称
--------------
1  名称1
1  名称2
1  名称3
1  名称4
2  名称5
3  名称6
3  名称7


我想检索出来
1 名称1
2 名称5
3 名称6

也就是no一样的情况下只取第一条的名称
如果你认为很简单,请试过再说,谢谢。

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
2 [报告]
发表于 2008-05-21 18:33 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2008-05-24 21:42 |只看该作者
恩,谢谢了,这个好用。

论坛徽章:
0
4 [报告]
发表于 2008-05-24 23:42 |只看该作者
如果只是取一条的话:
select no,min(name) from t1
group by no;
如果取一条以上的话,则可参考ILoveMK的SQL

论坛徽章:
0
5 [报告]
发表于 2008-05-24 23:47 |只看该作者
原帖由 doni 于 2008-5-24 23:42 发表
如果只是取一条的话:
select no,min(name) from t1
group by no;
如果取一条以上的话,则可参考ILoveMK的SQL

min取到得未必是“第一”条啊
我记得oracle的sql有把结果集当作顺序表处理的方法的,不过好久不搞,想不起来了……

论坛徽章:
0
6 [报告]
发表于 2008-05-25 14:56 |只看该作者
如果要根据no做group by,然后根据名称进行排序,取有序的第一条或者多少条,可以考虑使用rank。
范例:
CREATE TABLE TEST1(NO VARCHAR2(10),NAME VARCHAR2(10));

insert into test1 values('80','sh1');

insert into test1 values('70','sh1');

insert into test1 values('80','ab1');

insert into test1 values('60','dd1');

commit;

SQL> select * from test1;

NO         NAME
---------- ----------
80         sh1
70         sh1
80         ab1
60         dd1

SQL> SELECT NO, NAME
  2    FROM (SELECT NO, NAME,
  3                 RANK () OVER (PARTITION BY NO ORDER BY NAME ASC) AS row_rank
  4            FROM TEST1)
  5   WHERE row_rank = 1;

NO         NAME
---------- ----------
60         dd1
70         sh1
80         ab1

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
7 [报告]
发表于 2008-05-25 15:21 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2008-05-25 21:05 |只看该作者
order by时候增加一个rowid,就可以避免这个问题了

论坛徽章:
0
9 [报告]
发表于 2008-05-26 11:40 |只看该作者
原帖由 Magicloud 于 2008-5-24 23:47 发表

min取到得未必是“第一”条啊
我记得oracle的sql有把结果集当作顺序表处理的方法的,不过好久不搞,想不起来了……


我看你的举例,象是要取最小,想当然了

论坛徽章:
0
10 [报告]
发表于 2008-05-26 11:55 |只看该作者
但低版本的ORACLE里,没有PARTITION BY 或rank,要怎么做,大家可以试试看
我想到两种办法,1.用PL/SQL,2.在group by 上做文章
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP