1 Distinct 的作用范围

下面先来看看例子:

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

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

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

select distinct name from table

得到的结果是:


nameac

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

select distinct name, id from table

结果会是:


id   name1 a2 b3 c4 c5 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            12   b            13   c            1

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

Sql Distinct知多少

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

2 Group By 和 Having, Where ,Order by语句的执行顺序:

说明一下的Group By, Having, Where, Order by几个语句的执行顺序。一个SQL语句往往会产生多个临时视图,那么这些关键字的执行顺序就非常重要了,因为你必须了解这个关键字是在对应视图形成前的字段进行操作还是对形成的临时视图进行操作,这个问题在使用了别名的视图尤其重要。

以上列举的关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数),然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组,接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉,然后按照Order By语句对视图进行排序,这样最终的结果就产生了。在这四个关键字中,只有在Order By语句中才可以使用最终视图的列名,如:

SELECT FruitName,ProductPlace,Price,ID AS IDE,Discount
FROM T_TEST_FRUITINFO
WHERE (ProductPlace=N'china')
ORDER BY IDE

这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。

GROUP BY 总结
SQL中GROUPBY的使用

3 join中on与where

left join on 和where条件的放置, left join 失效问题

转载于:https://www.cnblogs.com/bishi/p/5699013.html

数据库学习3 Distinct Group By相关推荐

  1. MySQL数据库-学习笔记

    一.MySQL课程内容 1.1 数据库介绍 数据库概念 术语介绍 1.2 MySQL数据库 下载.安装.配置.卸载 MySQL客户端工具的安装及使用 1.3 SQL 结构化查询语言 什么是SQL SQ ...

  2. oracle数据库学习小记一

    oracle数据库学习小记 数据库函数 一.日常函数 二.数学函数 三.聚合函数(常用于group by从句的select查询中) 四.字符串函数 五.日期和时间函数 六.加密函数 七.控制流函数 八 ...

  3. MySQL数据库学习日志(六):索引和视图

    MySQL数据库学习日志(六):索引和视图 MySQL数据库学习日志(六):索引和视图 索引 (一)索引概述 (二)优缺点 (三)分类 1. 按照底层实现的方式 2. 按照功能划分 普通索引 唯一索引 ...

  4. 库存生产-实用sql知识:如何在保证去重分组的情况下获取组内最新数据(可按时间排序),distinct +group by +嵌套结果 的联合妙用

    这是花了一个小时实践出来的! 网上有特别多的distinct +group by 的比较区别的,几乎没有几篇文章说他们的联合妙用. 步入正题,先说我发现妙用的基于实际问题: 库存与入库单的一个关系业务 ...

  5. 我的MySQL数据库学习笔记

    一.操作数据库的基本语句 cmd进入mysql:mysql -uroot -p  创建数据库:CREATE DATABASE 库名;  创建数据表:同sqlite:  查看数据库:SHOW DATAB ...

  6. Oracle 数据库学习

    目录 Oracle 数据库学习 1. Oracle数据库 1.1 简介 1.2权限分类: 2. 用户管理 2.1用户操作 2.2表操作 2.3关闭数据库 2.4其他操作 3. Oracle 重要文件 ...

  7. 数据库学习之MySQL (十七)—— SQL99 主查询 与 子查询 子查询分类之WHERE的子查询

    文章目录 主查询 子查询 纲举目张--子查询的分类 WHERE语句后的 子查询 主查询 子查询 概念集中于SELECT语句 之前我们所学习的所有,都是SELECT作为独立的一句 是主干,是爸爸 后面跟 ...

  8. MySQL 数据库学习(一)

    MySQL 数据库学习 数据库 1. 数据库的介绍 2. 数据库的分类 3. 数据库的作用 4. 数据库的特点 5. 小结 MySQL数据库 1. MySQL数据库的介绍 2. MySQL数据库的安装 ...

  9. 数据库学习笔记(1)

    数据库学习笔记(1) 文章目录 数据库学习笔记(1) @[toc] DB 基本概念 连接数据库的三要素 元数据 mongoose 查询符合对象数组中某个对象的值 redis 是什么 存储的数据类型 r ...

最新文章

  1. Python 比特币 教程 之一:创建机器人
  2. 有关网页抓取问题的一些经验总结 - passover【毕成功的博客】 - 51CTO技术博客
  3. 【转】程序员健康建议
  4. python socket.error: [Errno 24] Too many open files
  5. linux 进程 命令 cat,Linux cat命令详解
  6. 使用validate验证数据库
  7. python3怎么安装mysql_Python3.7安装mysqlclient
  8. CMS:文章管理之视图(4)
  9. 本科毕业论文EndNote格式
  10. [Swift]SwiftyJSON的使用:解析JSON
  11. 华为电脑管家最新(11.1.1.95)版完美升级安装教程
  12. win10系统登录服务器密码存储位置,win10远程服务器登录密码
  13. 游戏源代码是什么意思_什么是游戏
  14. c# chart 各个属性_C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
  15. 服务器系统2008r2企业版补丁,windows2008R2服务器更新补丁
  16. H264和MPEG4区别
  17. python计算活了多少天计算器_年龄计算器-实际岁数计算器-周岁计算器-虚岁计算器-生日天数计算-活了多少天计算-虚岁怎么算...
  18. C# 拼图游戏(超详细)
  19. 【报错】Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
  20. python中什么是一个无序的不重复元素序列_无序Python集的“顺序”

热门文章

  1. python做股票系统_GitHub - hetingqin/stock: stock,股票系统。使用python进行开发。
  2. 树莓派wiringPi库详解
  3. 王爽《汇编语言(第三版)》检测点11.1
  4. 利用go语言创建web server的两种方式
  5. 用python实现TCP协议传输功能(服务端代码)
  6. 16位汇编 寄存器的操作
  7. CF-527E(Data Center Drama) 欧拉图+构造
  8. 向顺序容器vector、string、deque、list、forward_list中插入\删除元素时迭代器、引用、指针的变化
  9. C++ 调试帮助简介
  10. Linux线程——线程同步