Distinct
Limit
LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。
LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
如果只给定一个参数,它表示返回最大的记录行数目。
如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1。
初始记录行的偏移量是 0(而不是 1)。
查找
列名 [NOT ] LIKE
匹配串中可包含如下四种通配符:
_:匹配任意一个字符;
%:匹配0个或多个字符;通配符
[ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表 达 );
WHERE university NOT IN ('复旦大学') brackets
GROUP BY SELECT语句中非聚合的列
HAVING子句用来对分组后的结果数据再进行筛选。
- 分别查看&结果不去重:所以直接使用两个条件的or是不行的,直接用union会去重,要用union all,分别去查满足条件1的和满足条件2的,然后合在一起不去重
SELECT 班号 ,班名,
CASE
WHEN 系号=1 THEN '软件工程系'
WHEN 系号=2 THEN '计算机系'
WHEN 系号=3 THEN '物联网系'
END
AS 系号,班主任号
FROM 班级表
IF( expr1 , expr2 , expr3 )
- SUM() OVER() 用于计算累积和(running total),它根据指定的排序顺序累计计算一个数值列的和。
SELECT
grade,
SUM(number) OVER (ORDER BY grade ASC) AS cumulative_sum
FROM
class_grade;
- DENSE_RANK() 用于为数据行分配排名(rank),即使存在重复值,也会为每一个唯一值分配一个唯一的排名。
select emp_no,salary
from
(select emp_no, salary, dense_rank() over(order by salary DESC) t
from salaries
) as ranked_salaries
where t = 2
Derive 的表一定要有名字
过滤要最后加where
拼接字符串
select concat(last_name, " ", first_name) from employees
date_format(date,'%Y-%m') as mon
列别名(如 mon)不能直接在 PARTITION BY 子句中使用
select first_name
from employees
order by right(first_name,2)
select first_name
from employees
order by substr(first_name,-2)
知识点总结:group_concat()函数将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。
select dept_no, group_concat(emp_no) as employees
from dept_emp
group by dept_no