SQL语句管理顺序的坑

2019-10-15 11:28栏目:计算机论坛
TAG:

率先看上边一条相比成功语句,都以相比广泛的显要字。

USE Temp;

SELECT empid, YEAR(orderdate) AS orderyear, COUNT(*) AS numorders
FROM Sales.Orders
WHERE custid = 71
GROUP BY empid, YEAR(orderdate)
HAVING COUNT(*) > 1
ORDER BY empid, orderyear;

小编们来详细深入分析一下sql语句的逻辑管理顺序,纵然select在每条语句的率先位,但其实它是被最后才管理的

1.from  

2.where

3.group by

4.having

5.select

6.order by

7.TOP

在留心剖析各类奉行各样代表的意趣 (它的实际上顺序)

FROM Sales.Orders
WHERE custid = 71
GROUP BY empid, YEAR(orderdate)
HAVING COUNT(*) > 1
SELECT empid, YEAR(orderdate) AS orderyear, COUNT(*) AS numorders
ORDER BY empid, orderyear;

1.从 Orders 表查询数据

2.依据条件筛选客商ID等于71的

3.对客商id和订单年度 实行分组

  1. 再选出大于三个订单的组

5.赶回查询出的数据 以至你要出示的字段

6.终极对客户id 和订单 举行排序

7.输出

输入的键入顺序和管理顺序不雷同是有缘由的,SQL设计员是为着让客商依据土耳其共和国(The Republic of Turkey)语的方法提供温馨的央浼

建议、坑

  1. from 表时  最佳给定 库名和表名  Sales.Orders  让表呈现表示 不用程序检索。
  1. where 子句至极关键  SQL Server 会对where 条件 进行评估访谈央求数据要动用的目录,通过索引可以大大缩短表扫描时间

并且 where 子句检索 达成后  它回到的是搜索结果为True的行  ,但一味铭记, SQL 数据库使用三值谓词逻辑,也正是说有多个结实。

True,False 或 UNKNOWN ,  再次来到true 行 并区别样不回来False  实际上是不回来 False 行 和 UNKNOWN 行 以往会再博客中特意讲NULL。

3.记住除count(*)之外,  聚合函数都以忽略NULL标识  借使有一组数据“1,1,3,4,5,null”列名称为qty   表明式Count(*) 再次来到的是6 然则Count(qty)

是5  count中加以呈现值 就能够默许寻觅已知值  也足以  count(distinct qty ) 再次来到的是4 去重新  那些 可以用来 管理  重回各个不另行总计难点很方便 它和 select distinct 有极大质量差别 现在会细讲 也得以 sum(distinct qty ) 是13 也是用作总计不重复数据。

4.因为 group by 属于行管理 在having 先计算机手艺斟酌所以having 中得以出现  聚合函数 。

5.像上边包车型地铁 “YEALX570(orderdate)” SQL Server 只对它运维壹回  能辨别查询中重复使用的一样表达式

6.最棒别使用 select * 纵然你要查询 全部字段。

7.应用 order by 对有雅量再度的字段举行排序是对事情未有什么益处的  举例对日期实行排序 这样一个排序选10条 会有八个被以为是对的结果 所以大家要保险排序字段的多少独一性, 以致在 select distinct  时 排序 会导致 单个结果对应七个源数据行。

 

版权声明:本文由493333王中王开奖结果发布于计算机论坛,转载请注明出处:SQL语句管理顺序的坑