SQL 给一个表两个字段进行去重
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 给一个表两个字段进行去重相关的知识,希望对你有一定的参考价值。
我这里有一个表名字是 tab_HotelInfo 想让他显示两个字段类似于select HotelId,HotelName from tab_HotelInfo 可是我的需求是让HotelName不重复显示
使用过select distinct HotelName,HotelId了 数据还有有重复项 不符合我的需求 求大神帮忙解决一下
或
select max(HotelId),HotelName from tab_HotelInfo grouy by HotelName 参考技术A distinct HotelName,HotelId是HotelName,HotelId两个都去重了,比如HotelName=1,HotelId=1和HotelName=1,HotelId=2是不一样的,所以就出现了两个HotelName=1的数据,我还是建议你分开两个sql语句写,如果要的数据全的话,当然要是只用HotelName不重复而HotelId可以取其中一条数据时,一楼的就行,就看你怎么取了 参考技术B select distinct HotelName,HotelId group by HotelName
HotelName建立索引
union all ,union
union联合,如果想将两个select的结果一起显示出来就要考虑用联合。
两个要联合的SQL语句 字段个数必须一样,而且字段类型要“相容”(一致);
Union, 对两个结果集进行并集操作,去重, 同时进行默认规则的排序;
Union All,对两个结果集进行并集操作,不去重,不进行排序;
Intersect,对两个结果集进行交集操作,去重, 同时进行默认规则的排序;
Minus, 对两个结果集进行差操作, 去重, 同时进行默认规则的排序。
可以在最后一个结果集中指定Order by子句改变排序方式。
union 和 union all都可以将多个结果集合并,而不仅仅是两个,你可以将多个结果集串起来。
使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。但列名则不一定需要相同,oracle会将第一个结果的列名作为结果集的列名。
以上是关于SQL 给一个表两个字段进行去重的主要内容,如果未能解决你的问题,请参考以下文章