distinct 用法总结

Oracle——distinct的用法
distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

下面先来看看例子:

table表

字段1     字段2
   id        name
   1           a
   2           b
   3           c
   4           c
   5           b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from table
得到的结果是:

  

----------  

name
   a
   b
   c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

----------  

id name
   1 a
   2 b
   3 c
   4 c
   5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。

------------------------------------------------------------------------------------------------------------

下面方法可行:

select *, count(distinct name) from table group by name

结果:

   id name count(distinct name)
   1 a 1
   2 b 1
   3 c 1

最后一项是多余的,不用管就行了,目的达到。。。。。

group by 必须放在 order by 和 limit之前,不然会报错

Oracle——distinct的用法
2008年07月16日 下午 03:18

distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。

下面先来看看例子:

table表

字段1     字段2
   id        name
   1           a
   2           b
   3           c
   4           c
   5           b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from table
得到的结果是:

  

----------  

name
   a
   b
   c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

----------  

id name
   1 a
   2 b
   3 c
   4 c
   5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。

------------------------------------------------------------------------------------------------------------

下面方法可行:

select *, count(distinct name) from table group by name

结果:

   id name count(distinct name)
   1 a 1
   2 b 1
   3 c 1

最后一项是多余的,不用管就行了,目的达到。。。。。

group by 必须放在 order by 和 limit之前,不然会报错


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL DISTINCT用于从表中选择不同的值。例如,如果您有一个名为“city”的列,并且您想要选择不同的城市名称,则可以使用以下查询: SELECT DISTINCT city FROM table_name; 这将返回表中所有不同的城市名称。 ### 回答2: MySQL中的DISTINCT关键字用于从结果集中去除重复的行。它可以应用于SELECT语句中的一个或多个字段。当使用DISTINCT时,查询结果将只包含唯一值。 在使用DISTINCT时,数据库引擎会对指定的字段进行去重操作。例如,如果我们希望获取一个表中某个字段的唯一值,我们可以使用以下语法: SELECT DISTINCT column FROM table; 这将返回表中特定列的唯一值。保留的结果集将只包含不重复的值。 需要注意的是,DISTINCT关键字会应用于SELECT语句中的所有列。如果在SELECT语句中选择多个列,那么DISTINCT将会对这些列的组合进行去重。例如: SELECT DISTINCT column1, column2 FROM table; 以上语句将对column1和column2的组合进行去重,返回不重复的组合值。 在使用DISTINCT时,可以与其他关键字和函数一起使用。例如,我们可以使用DISTINCT和COUNT函数来获取一个表中某列的唯一值以及该列的数量: SELECT DISTINCT column, COUNT(column) FROM table GROUP BY column; 这将返回表中列的唯一值以及每个唯一值的出现次数。 总结来说,MySQL中的DISTINCT关键字用于从查询结果中去除重复的行。它可以应用于一个或多个字段,返回只包含唯一值的结果集。 ### 回答3: MySQL中的DISTINCT用于从表中选择唯一不同的值。 通常情况下,DISTINCT与SELECT语句一起使用,以选择表中指定列的唯一值。例如,如果有一张名为"users"的表,包含了"姓名"和"年龄"两列,我们想要选择所有不同的姓名,可以使用以下语句: SELECT DISTINCT 姓名 FROM users; 上述语句将返回表中所有不同的姓名。如果有重复的姓名,只会返回一个。 DISTINCT也可以与多个列一起使用,以选择多个列的唯一组合值。例如,如果我们想要选择所有不同的姓名和年龄组合,可以使用以下语句: SELECT DISTINCT 姓名,年龄 FROM users; 上述语句将返回表中所有不同的姓名和年龄组合。 需要注意的是,DISTINCT关键字会针对指定的列进行去重操作,返回的结果集将只包含不同的值。它会对所有选择的列进行比较,而不仅仅是第一个选择的列。 另外,DISTINCT也可以与ORDER BY语句一起使用,以对结果进行排序。例如,如果我们想要按照姓名的字母顺序选择所有不同的姓名,可以使用以下语句: SELECT DISTINCT 姓名 FROM users ORDER BY 姓名; 上述语句将返回按照字母顺序排序的所有不同的姓名。 总之,MySQL中的DISTINCT用于选择表中指定列的唯一值,可以与SELECT、ORDER BY等语句一起使用,以满足具体的查询需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值