本篇博客会不定时更新
组合两个表
SELECT a.FirstName,a.LastName,b.City,b.State from Person a left join Address b USING(PersonID);
SElECT a.FirstName,a.LastName,b.City,b.State from Person a left join Address b on a.PersonID=b.PersonID;
可以使用USING()
这个语法
第二高的薪水
SELECT IFNULL((SELECT DISTINCT Salary FROM Employee order by Salary desc limit 1 offset 1),null) AS SecondHighestSalary
第一个SELECT
后面是没有加括号的,写的时候可以先不用写最外层的SELECT
,下班里面的写好,里面的SELECT
得到的是一个值,IFNULL
函数再对这个值进行判断得出来一个值,但是这个值不能输出到页面上,需要最外面的SELECT
选中
DISTINCT
是放到SELECT
之后的,而且只能放到字段的最前面,是没有括号的
第N高的薪水
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N:= N-1;
RETURN(
SELECT Salary from Employee group by Salary order by Salary DESC limit N,1
);
END
注意函数
的使用,函数
和Go的函数
类似是参数和返回值类型是写到后面
的,GROUP BY
放到ORDER BY
之前
分数排名
select a.Score as Score,
(select count(distinct b.Score) from Scores b where b.Score >= a.Score) as 'rank'
from Scores a
order by a.Score DESC
里面的SELECT
得到的是RANK,这个RANK是通过外部的字段比较得到的,理解上可以从每一个行来理解,SELECT
的是每一行的数据
起别名的时候字段不要忘记加别名.字段