数据库part2---子查询

注:这里依然是在用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表示不存在

相关推荐
卤炖阑尾炎2 分钟前
PostgreSQL 日常运维全指南:从基础操作到备份恢复
运维·数据库·postgresql
daad7771 小时前
wifi_note
运维·服务器·数据库
xixingzhe22 小时前
Mysql统计空间增量
数据库·mysql
程序员萌萌2 小时前
Redis的缓存机制和淘汰策略详解
数据库·redis·缓存机制·淘汰策略
不剪发的Tony老师3 小时前
SQLite 3.53.0版本发布,重要更新
数据库·sqlite
Bczheng13 小时前
九.Berkeley DB数据库 序列化和钱包管理(1)
数据库
cozil3 小时前
记录mysql创建数据库未指定字符集引发的问题及解决方法
数据库·mysql
架构师老Y3 小时前
013、数据库性能优化:索引、查询与连接池
数据库·python·oracle·性能优化·架构
AC赳赳老秦3 小时前
OpenClaw数据库高效操作指南:MySQL/PostgreSQL批量处理与数据迁移实战
大数据·数据库·mysql·elasticsearch·postgresql·deepseek·openclaw
一 乐3 小时前
校园线上招聘|基于springboot + vue校园线上招聘系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·校园线上招聘系统