前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >几种去重的SQL写法

几种去重的SQL写法

作者头像
bisal
发布2020-06-10 10:30:26
1.8K0
发布2020-06-10 10:30:26
举报
文章被收录于专栏:bisal的个人杂货铺

墨天轮社区的每日一题(https://www.modb.pro/test),可以说是个小而精的专栏,利用碎片时间,就可以学习知识,非常推荐。

这是其中一道,考的就是SQL语法,基础中的基础,但乍一看,或许不是所有人能直接给出正确答案,不信你试试?

创建测试表,插入测试数据,一共4条,2条id=1,1条id=2,1条id是空,

代码语言:javascript
复制
SQL> create table t1(id number);
Table created.


SQL> select rownum, id from t1;
 ROWNUM     ID
-------- ---------
   1         1
   2         1
   3         2
   4

选项A,按照id列执行group分组,会按照列id的值进行分组操作,包括空值,因此这个操作,是正确的选项,

代码语言:javascript
复制
SQL> select id from t1 group by id;
  ID
----------
   1


   2

选项B,他使用的是UNION,略微迷惑,但他是正确选项,

代码语言:javascript
复制
SQL> select id from t1 union select null from dual;
  ID
----------
   1
   2

UNION和UNION ALL的区别,UNION会做去重,UNION ALL则会返回所有的数据,

The UNION operator returns only distinct rows that appear in either result, while the UNION ALL operator returns all rows.

这就很清楚了,虽然select id from t1返回了所有数据,但通过使用UNION,就可以达到去重,而且连接UNION的可以是select 1 from t1,可以是select id from t1,只需要在数据类型上一致即可,

代码语言:javascript
复制
SQL> select id from t1 union select 1 from t1;
  ID
----------
   1
   2




SQL> select id from t1 union select id from t1;
  ID
----------
   1
   2

选项C,是正确选型,可能有些朋友,很少见到unique的用法,其实他是Oracle的SQL风格支持的旧语法,在Oracle以外的数据库,很可能就报错了,

代码语言:javascript
复制
SQL> select unique id from t1;
  ID
----------
   1


   2

选项D,是正确选项,返回不重复记录,是distinct标准用途,distinct和unique的区别,就在于distinct是ANSI SQL标准语法,unique只在Oracle中支持,在其他的方面,两者是相同的,

代码语言:javascript
复制
SQL> select distinct id from t1;
  ID
----------
   1


   2

要是深挖下distinct和unique的用法,如下这个算是要注意的,如果表中无clob类型的字段,用distinct *和unique *都可以的,

http://sqlfiddle.com/#!4/ce01b/51

但是表中若存在clob类型的字段,此时用distinct *和unique *,就会报错,

http://sqlfiddle.com/#!4/97d3e/26

如果指定distinct和unique非clob类型的字段,就可以正常执行,

http://sqlfiddle.com/#!4/97d3e/25

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档