SQL 给一个表两个字段进行去重

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 给一个表两个字段进行去重相关的知识,希望对你有一定的参考价值。

我这里有一个表名字是 tab_HotelInfo 想让他显示两个字段类似于select HotelId,HotelName from tab_HotelInfo 可是我的需求是让HotelName不重复显示
使用过select distinct HotelName,HotelId了 数据还有有重复项 不符合我的需求 求大神帮忙解决一下

select min(HotelId),HotelName from tab_HotelInfo grouy by HotelName 
 

 
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 给一个表两个字段进行去重的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver创建视图

两个字段都相同的记录如何去重

SQL语句对某字段去重?

SQL多个字段如何去重

SQL 两个字段去重

SQL多个字段相加