这样的oracle 语句怎么写?

tyrbl 2008-06-25 07:55:41
比如一张表里有学号(id),姓名(name)这两个字段,姓名有重复,我要查询出所有学生的信息,但是姓名重复的只显示一条,请问这样的语句sql语句怎样写?
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kokobox 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fxianxian 的回复:]
用分析函數ROW_NUMBER()OVER(PARTITION BY COLUMN_NAME ORDER BY COLUMN_NAME)
然后取第一條

SELECT ID,NAME FROM
(SELECT ID,NAME,ROW_NUMBER()OVER(PARTITION BY NAME ORDER BY ID,NAME) RN
FROM TABLE)
WHERE RN=1

[/Quote]

最好用ROW_NUMBER()OVER(PARTITION BY COLUMN_NAME ORDER BY COLUMN_NAME)

正解
ws010 2008-06-26
  • 打赏
  • 举报
回复
select distinct name,id from table;
oraclelogan 2008-06-25
  • 打赏
  • 举报
回复
有点疑问:
人那么多,重名的可能性太大啦 ,我觉得应该让学号id成为主键,而不是姓名吧?
oraclelogan 2008-06-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fxianxian 的回复:]
用分析函數ROW_NUMBER()OVER(PARTITION BY COLUMN_NAME ORDER BY COLUMN_NAME)
然后取第一條

SELECT ID,NAME FROM
(SELECT ID,NAME,ROW_NUMBER()OVER(PARTITION BY NAME ORDER BY ID,NAME) RN
FROM TABLE)
WHERE RN=1

[/Quote]

正解啊!
chensi05 2008-06-25
  • 打赏
  • 举报
回复
SELECT NAME,MAX(ID)
FROM TABLE
fxianxian 2008-06-25
  • 打赏
  • 举报
回复
用分析函數ROW_NUMBER()OVER(PARTITION BY COLUMN_NAME ORDER BY COLUMN_NAME)
然后取第一條

SELECT ID,NAME FROM
(SELECT ID,NAME,ROW_NUMBER()OVER(PARTITION BY NAME ORDER BY ID,NAME) RN
FROM TABLE)
WHERE RN=1
lu_huanling 2008-06-25
  • 打赏
  • 举报
回复
SELECT ID ,NAME FROM 表名
GROUP BY NAME
ORDER BY ID

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧