永洪社区

标题: sql [打印本页]

作者: 小白福在加油    时间: 2024-5-28 15:36
标题: sql
sql语句先排序然后去重,sql语句怎么写,能不能写个例子语句

作者: yhdata_OQXed5rI    时间: 2024-5-28 16:42
本帖最后由 yhdata_OQXed5rI 于 2024-5-28 16:44 编辑

SELECT DISTINCT column_name
FROM table_name
ORDER BY column_name ASC;


作者: 美滋滋    时间: 2024-5-28 17:03
你能不能提供详细信息,
比如表里有几个字段,按照哪个字段排序?
去重是怎么去重?是完全一致的数据去重,还是根据某个字段去重,如果某个字段去重,那么其余字段如何取舍?
这些因素你要说清楚了,才能给你具体SQL。
作者: 小白福在加油    时间: 2024-5-30 11:18
美滋滋 发表于 2024-5-28 17:03
你能不能提供详细信息,
比如表里有几个字段,按照哪个字段排序?
去重是怎么去重?是完全一致的数据去重, ...

比如有3个字段,1,2,3,先根据2降序,然后1去重
作者: 美滋滋    时间: 2024-5-30 11:41
用实际数据举例吧
比如有三个字段,分别是字段A,字段B,字段C
看你的说明,字段C应该是没有实际用处的,对排序和去重没有任何影响,那么我们只关注字段A和字段B
举例字段A和字段B的数据如下
字段A-1    90
字段A-1    95
字段A-2    88
字段A-2    80
那么你最终想留下的数据是下面两条数据吗?
字段A-1    95
字段A-2    88

如果是上面的情况,那么可以用下面的SQL
select tmp.字段A,tmp.字段B,tmp.字段C from (
select 字段A,字段B,字段C,
row_number() over (partition by 字段A order by 字段B desc) cno
from 表
) tmp where tmp.cno = 1

你把上面的SQL中对应的"字段A","字段B","字段C"以及"表" 换成你实际的内容就可以了
作者: 小白福在加油    时间: 2024-5-30 17:01
美滋滋 发表于 2024-5-30 11:41
用实际数据举例吧
比如有三个字段,分别是字段A,字段B,字段C
看你的说明,字段C应该是没有实际用处的,对 ...

谢谢大佬,明白了




欢迎光临 永洪社区 (http://club.yonghongtech.com/) Powered by Discuz! X3.4