查看内容

排序方法详解

  • 2020-04-23 04:16
  • 编程人生
  • Views

聚合函数 count,max,min,avg,sum... select count (*) from T_Employee select Max(FSalary) from T_Employee

排序 ASC升序 DESC降序 select * from T_Employee order by Fage

先按年龄降序排列。如果年龄相同,则按薪水升序排列 select * from T_Employee order by FAge DESC,FSalary ASC

order by 要放在 where 子句之后

通配符过滤 通配符过滤用like 单字符通配符_' 多字符通配符%' select * from T_Employee where FName like '_erry'

NULL 是不知道的意思,而不是没有

SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数请看下面的 Products 表:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder 1 computer 699 25 15 2 printer 365 36 3 telephone 280 159 57

假如 UnitsOnOrder 是可选的,而且可以包含 NULL 值。

我们使用如下 SELECT 语句:

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)FROM Products在上面的例子中,如果有 UnitsOnOrder 值是 NULL,那么结果是 NULL。

微软的 ISNULL() 函数用于规定如何处理 NULL 值。

NVL(), IFNULL() 和 COALESCE() 函数也可以达到相同的结果。

在这里,我们希望 NULL 值为 0。

下面,如果 UnitsOnOrder 是 NULL,则不利于计算,因此如果值是 NULL 则 ISNULL() 返回 0

用SQL语句查询NULL的数据不能用=或 而用is NULL或者is not NULL select * from T_Employee where FName is NULL

in(23,25)同时匹配两个值。相当于 23 or 25

between 20 and 30 匹配介于20到30之间的数

BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。BETWEEN 操作符操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

SQL BETWEEN 语法SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2原始的表 (在实例中使用:)Persons 表:

Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue York 3 Carter Thomas Changan Street Beijing 4 Gates Bill Xuanwumen 10 Beijing BETWEEN 操作符实例如需以字母顺序显示介于 Adams和 Carter之间的人,请使用下面的 SQL:

SELECT * FROM PersonsWHERE LastNameBETWEEN 'Adams' AND 'Carter'结果集:Id LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York

更多详细内容请查看:mysql教程-sql.htm">

group by分组

GROUP BY 语句GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

SQL GROUP BY 语法SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name

select FAge, count(*) from T_Employee Group by Fage 先把相同的Fage分一组,再统计每一组的个数

group by子句要放在where子句之后。如果想取某个年龄段人数大于1的,不能用where count 1 ,因为聚合函数不能放在where子句之后。要用having子句 Having是对分组后的列进行过滤,能用的列和select中的一样。如下例中则不能用having Fsalary2000 只能用where Fsalary2000 select FAge, count(*) from T_Employee Group by FAge having count(*) 1;

限制结果集的范围 select Top 3 * from T_Employee order by FSalary DESC

从第六名开始选3个.2005后可以用Row_Number函数 select Top 3 * from T_Employee where FNumber not in(select TOP 5 FNumber from T_Employee order by FSalary DESC) order by FSalary DESC