sql distinct 转的

SQL中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之前,不然会报错

时间: 2024-10-18 19:13:43

sql distinct 转的的相关文章

SQL-W3School:SQL DISTINCT 语句

ylbtech-SQL-W3School:SQL DISTINCT 语句 1.返回顶部 1. 本章讲解 SELECT DISTINCT 语句. SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法: SELECT DISTINCT 列名称 FROM 表名称 使用 DISTINCT 关键词 如果要从 "Company" 列中选取所有的值,我们

SQL Distinct处理多列的问题

今天在做SSIS的ETL工作时,其中一个left join组件的运行结果总是会多出一些记录.分析了一下,该问题的原因是右表中作为关联的那一列数据有重复.left join的运行策略可以理解为根据左表的每一条记录的关联字段去对照右表的关联字段,如果右表的关联字段存在重复,就会生成重复的记录.如果左表存在重复而右表无重复,则不会多出来记录.举个例子,如果左表a和右表b的数据分别如下所示 a表 ID Name 1 张三 2 李四 3 王五 4 王陆 b表 ID Description 1 内联部 1

SQL Distinct 语句详解

SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法: SELECT DISTINCT 列名称 FROM 表名称 使用 DISTINCT 关键词 如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句: SELECT Company FROM Orders "Orders"表: Company

W3C 经典SQL

SQL 是用于访问和处理数据库的标准的计算机语言. 什么是 SQL? SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言 编者注:ANSI,美国国家标准化组织 SQL 能做什么? SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的记录 SQL 可更新数据库中的数据 SQL 可从数据库删除记录 SQL 可创建新数据库 SQL 可在数据库中创建新表 SQL 可在数据库中创建存储过程 SQL 可在数据库中创建视图 SQ

SQL语句 & 查询表结构

[group by] 对结果集进行分组,常与汇总函数一起使用. SELECT column,SUM(column) FROM table GROUP BY column HAVING 通常与 GROUP BY 子句同时使用.不使用 GROUP BY 时, HAVING 则与 WHERE 子句功能相似. Company                          Amount W3Schools                         5500 IBM                

全面理解SQL

很多程序员认为SQL是一头难以驯服的野兽.它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式.命令式语言. 面向对象语言甚至函数式编程语言(虽然有些人觉得SQL 还是有些类似功能). 我每天都写SQL,我的开源软件JOOQ中也包含SQL.因此我觉得有必要为还在为此苦苦挣扎的你呈现SQL的优美!下面的教程面向于: 已经使用过但没有完全理解SQL的读者 已经差不多了解SQL但从未真正考虑过它的语法的读者 想要指导他人学习SQL的读者 本教程将重点介绍SELECT 语句.其他 

简单十步让你全面理解SQL

很多程序员认为SQL是一头难以驯服的野兽.它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式.命令式语言. 面向对象语言甚至函数式编程语言(虽然有些人觉得SQL 还是有些类似功能). 我每天都写SQL,我的开源软件JOOQ中也包含SQL.因此我觉得有必要为还在为此苦苦挣扎的你呈现SQL的优美!下面的教程面向于: 已经使用过但没有完全理解SQL的读者 已经差不多了解SQL但从未真正考虑过它的语法的读者 想要指导他人学习SQL的读者 本教程将重点介绍SELECT 语句.其他 

基于mysql的一些sql语法

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "He

厚溥教育1718部数据库连接作业答案,分装一个操作数据库而无需写SQL语句的函数

<?php header("Content-type:text/html;charset=utf8"); //PHP操作数据库的函数 function phpsql($dbconfig,$type,$field='',$data=array(),$condition=array(),$join=array()){ //判断存不存在数据库连接主机 if(!isset($dbconfig['host'])){ return "数据库连接主机不存在"; } //判断