注:这里依然是在用game这个数据库
子查询
where 后为条件
如果想要用一个查询结果作为条件再进行查询
我们可以用子查询
如下例子
我们想用玩家的平均等级来作为条件找出高于平均等级的玩家
我们可以这样做
sql
SELECT AVG(level) FROM player; --这个是条件
SELECT * FROM player WHERE level > (SELECT AVG(level) FROM player);


select 后为新表列
同样子查询可以用在select后面
比如我们需要看玩家的等级与平均等级和玩家等级和平均之间的差距
sql
select level, ROUND((SELECT AVG(level) from player)), level - ROUND((SELECT AVG(level) from player)) from player;

我们可以用as对表头进行定义
as 起表名

update、delete、insert、create语句后都可以使用子查询
create 后创新表
在create后面用子查询可以得到输出查询结果返回的表
如下,就是查询结果是返回所有低于五级的玩家,并把他们归到一个新创建的表
sql
CREATE TABLE new_player SELECT * FROM player WHERE level < 5;

如果现在想插入level 6~10的玩家到刚刚创建的新表(new_player)中
那我们可以用
insert 插数据
先查看6~10级都有哪些玩家



EXISTS 判断是否存在
如果我们想看看是否有等级大于100的玩家
那我们可以用exists
sql
SELECT EXISTS(SELECT * FROM player WHERE level > 100)

那我们试着查询一下是否有等级大于10的玩家

1表示存在,0表示不存在