表1:person
列名 类型
personid int(主键)
firstname varchar
lastname varchar
表2:address
列名 类型
addressid int(主键)
personid int
city varchar
state varchar
需求:编写一条sql,满足以下条件,无论person是否有地址消息,都需要基于上述两表提供的person的一下信息:firstname 、lastname、city、state
select
a1.firstname
,a1.lastname
,a2.city
a2.state
from
(select
firatname
,lastname
,personid
from
person) as a1
left join(
select
city
,state
personid
from
address
) as a2
on (a1.personid=a2.personid)
2、需求:获取到employee表中第二高的薪水,如果不存在第二高的,那么就返回null
表:employee:
id salary
1 100
2 200
3 300
返回的形式:
secondhighsalary
200
需求:获取到employee表中第二高的薪水,如果不存在第二高的,那么就返回null
select
ifnull(
select
distinct salary
from
employee
order by salary desc
limit 1 offset 1 , null
) as secondhighsalary
from employee
总结:
limit 1 :分页,表示的是展示几条数据
offset 1:偏移量,表示的是跳过第几条数据
ifnull:使用的方式:
ifnull(条件,null)表示的是条件满足就执行,不满足就返回null值