易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL distinct用法 简单group by 命令


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


相关文档:

SQL decimal介绍

具有固定有效位数和小数位数的数值资料类型。
decimal[ (p[ , s] )] and numeric[ (p[ , s] )]
固定有效位数和小数位数的数字。当使用最大有效位数时,有效值是从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义字是 dec 和 dec(p, s)。numeric 的功能相当於 decimal。
p (有效位数)
可储存的最大十进位数总数,小 ......

SQL 用exists代替全称量词

学习sql的必经问题。
学生表student (id学号     Sname姓名       Sdept所在系)  
课程表Course           (crscode课程号       name课程名)  
学生选课表transcript           (studid学号 &nbs ......

SQL 查询“仅仅”至少“全部”的问题

“全部的问题”在上一篇中已经写过一点了。
“仅仅”
:这个问题可以使用多表连接来处理。例如:查询仅仅选修了课程A和课程B的学生的信息,sql如下:
其中表student定义了学生的信息。transcript定义了学生的选课情况。crscode字段表示课程代码。
select s.id
from student s,transcript t1,transc ......

三中SQL 分页方法效率分析

三种SQL分页法效率分析
表中主键必须为标识列,[ID] int IDENTITY (1,1)
1.分页方案一:(利用Not In和SELECT TOP分页)
 语句形式:利用Not In和SELECT TOP分页) 效率中,需要拼接SQL语句
  SELECT TOP 10 * from  TestTable WHERE (Id  NOT  IN (SELECT  TOP  20    id&n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号