Select查询语句按以下顺序处理:
1.FROM 2.WHERE 3.GROUP BY 4.HAVING//含有 HAVING COUNT(*)>1 即保留多个数量的 5.SELECT 6.ORDER BY
书写顺序却是:
1.SELECT 2.FROM 3.WHERE 4.GROUP BY 5.HAVING 6.ORDER BY
AS
SELECT name as othername
as 可以给列名取别名 是在查询完之后取别名
Having
HAVing COUNT(*)>1 包含数量大于1的
ASC 升序(默认) DESC降序
DISTINCT删除重复行
TOP取前面的记录
例如
SELECT DISTINCT ID FROM DBO.TEST
SELECT TOP(10) ID FROM DBO.TEST
OVER提供了所有行的计算,但是只有在SELECT和ORDER BY处理阶段才允许使用。OVER可以理解为窗口。->开窗函数
GROUP BY 和OVER
聚合函数GROUP BY提供分组,分组只能返回一个值
OVER可以进行特定的运算,可以返回基础的列和聚合的列。ROW_NUMBER 给每行添加行号
聚合函数和排名函数都支持OVER 子句
例如
SELECT ID,VAL(订单价格)
SUM(VAL) OVER() AS TOTALVALUE, 对所有行
SUM(VAL) OVER(PARTITION BY ID) AS VALUE 对相同ID行计算SUM(VAL) 分区与不分区的区别 PARTITION BY用来分区(类似分组计算)
FROM DBO.TEST;
谓词
IN 检查一个值是否与一组元素中的至少一个相等。
WHERE ID IN (1001,1002,1003);
BETWEEN 检查在两个指定边界值之间
WHERE ID BETWEEN 1000 AND 1010;
Like模糊查询包含
WHERE NAME LIKE '%海';//%任意长度字符串
WHERE NAME LIKE '%_E';//_下划线代表任意单个字符
AND 或者OR 组合多个逻辑表达式
WHERE ID>'5' AND TOOLID IN (4441,88,444);
优先级 括号>AND>OR
SQL同样有substring函数 SUBSTRING(string,start,length)
LEFT(string ,n) RIGHT(string ,n) LEN(string)长度