20180715学习数据库-查询

    今天在https://leetcode-cn.com/网站中写了三道关于mysql数据库的练习题,下面是关于这三道题的详细记录:

1.查询,获取表中的第二大的值

表一:employee

id money
1   100
2 200
3

300     

 需要注意两种特殊情况,一是第二大的值为空的情况,输出null(用IFNULL()函数),一是第二大的值有多个,但只能输出一个(用max函数等)

代码为:

select ifnull((select max(money) from employee e1 where (select count(money) from employee e2 where e1.money<e2.money)=1),null) as second.

满足第一个情况的条件:select ifnull(*,null)

满足第二个情况的条件:max(money)

获取表中的第二大的值:select money from employee e1 where (select count(money) from employee e2 where e1.money<e2.money)=1(等于1的意思是,比e1大的数只有一个,若是要获取第三大的数,即改为等于2即可。count(money)是指统计所有的数)

设置别名:as second(as+名字)

2.查询,无论表一是否有表二的信息,都要获取到表一的信息(连表查询的应用)

表一:t1

tid    int
name varchar
password varchar
realname varchar

表二:t2

id int
address varchar
tid int

tid 是两个表共有的列

条件:获取name  password  address三个信息

代码如下:

selcet t1.name,t1.password,t2.address from t1 left join t2 on t1.tid=t2.tid

输出结果是:把t1所有的name  password 的信息都显示出来,t2的address有数据则显示,没有数据默认null

连表查询左连接:left join...on..:把左边的表的数据全部显示出来,即使右边的表没有匹配

右连接:right join …on…:与左连接相反

内连接:inner join…on…:两个表都有数据的显示出来

3.找出表一有,表二没有的数据

表一:t1

id    name
1 Tom
2 Sunny
3 Jok

表二:t2

id t1id
1 3
2 1

代码如下:

select t1.name from t1 where t1.id not in(select t2.t1id from t2 where t1.id = t2.t1id )

猜你喜欢

转载自blog.csdn.net/angryshan/article/details/81052709