【头歌系统数据库实验】实验6 SQL的多表查询-2

目录

第1关:查询每个选手的信息及其提交的解答信息,没做题的选手不显示

第2关:查询做了1001题且耗时大于500(time)的选手信息

第3关:查询所有选手信息及其提交的解答信息,没做题的选手也要显示

第4关:查询每个选手的信息、交的题目、和提交的结果,没做题的选手不显示

[第5关:用嵌套查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息](#第5关:用嵌套查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息)

[第6关:用连接查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息](#第6关:用连接查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息)

[第7关:用 EXISTS 实现查询做了 1032 号题的选手信息](#第7关:用 EXISTS 实现查询做了 1032 号题的选手信息)

[第8关:用NOT EXISTS实现查询没做 1032 号题的选手信息](#第8关:用NOT EXISTS实现查询没做 1032 号题的选手信息)

[第9关:用 EXISTS 实现查询和problem_id为 1026 的题目属于同一个比赛的题目信息](#第9关:用 EXISTS 实现查询和problem_id为 1026 的题目属于同一个比赛的题目信息)

[第10关:用 NOT EXISTS 实现查询参与过所有比赛的选手信息](#第10关:用 NOT EXISTS 实现查询参与过所有比赛的选手信息)


如果对你有帮助的话,不妨点赞收藏关注一下吧,爱你么么哒😘❤️❤️❤️

第1关:查询每个选手的信息及其提交的解答信息,没做题的选手不显示

任务描述

查询每个选手的信息及其提交的解答信息,没做题的选手不显示 (查询结果仅显示前50条,即在查询语句末尾加LIMIT 50)

相关知识

1、users为选手信息表; users表如下图(仅显示前几条):

现已构建users表,结构信息如下:

2、solution为选手提交的题目解答 solution表如下图(仅显示前几条):

现已构建solution表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码,在语句末尾加LIMIT 50,即可显示查询结果前50条。
########## Begin ##########
select *
from users,solution
where users.user_id=solution.user_id
LIMIT 50;
########## End ##########

第2关:查询做了1001题且耗时大于500(time)的选手信息

任务描述

查询做了1001题且耗时大于500(time)的选手信息

相关知识

1、users为选手信息表; users表如下图(仅显示前几条):

现已构建users表,结构信息如下:

2、solution为选手提交的题目解答 solution表如下图(仅显示前几条):

现已构建solution表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########
select DISTINCT users.user_id,reg_time,name
from users,solution
where users.user_id=solution.user_id
and solution.problem_id=1001
and solution.time>500;

########## End ##########

第3关:查询所有选手信息及其提交的解答信息,没做题的选手也要显示

任务描述

查询所有选手信息及其提交的解答信息,没做题的选手也要显示 (查询结果仅显示前50条,即在查询语句末尾加LIMIT 50)

相关知识

1、users为选手信息表; users表如下图(仅显示前几条):

现已构建users表,结构信息如下:

2、solution为选手提交的题目解答 solution表如下图(仅显示前几条):

现已构建solution表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码,在语句末尾加LIMIT 50,即可显示查询结果前50条。
########## Begin ##########
select *
from users left join solution on users.user_id=solution.user_id
LIMIT 50;

########## End ##########

第4关:查询每个选手的信息、交的题目、和提交的结果,没做题的选手不显示

任务描述

查询每个选手的信息、交的题目、和提交的结果,没做题的选手不显示 (查询结果仅显示前50条,即在查询语句末尾加LIMIT 50)

相关知识

1、users为选手信息表; users表如下图(仅显示前几条):

现已构建users表,结构信息如下:

2、solution为选手提交的题目解答 solution表如下图(仅显示前几条):

现已构建solution表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码,在语句末尾加LIMIT 50,即可显示查询结果前50条。
########## Begin ##########
select users.user_id,reg_time,name,solution.problem_id,result
from users,solution
where users.user_id=solution.user_id
LIMIT 50;
########## End ##########

第5关:用嵌套查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息

任务描述

用嵌套查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息,结果按problem_id升序排序。

相关知识

1、problem为题目表; problem表如下图(仅显示前几条):

现已构建problem表,结构信息如下:

2、contest_problem为比赛-题目关系; contest_problem表如下图(仅显示前几条):

现已构建contest_problem表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########
select *
from problem
where problem_id in 
(
    select problem_id
    from contest_problem
    where contest_id in(
        select contest_id
        from contest_problem
        where problem_id=1026
    )
)
ORDER BY problem_id ASC;


########## End ##########

第6关:用连接查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息

任务描述

用连接查询查找和problem_id为 1026 的题目属于同一个比赛的题目信息,结果按problem_id升序排序。

相关知识

1、problem为题目表; problem表如下图(仅显示前几条):

现已构建problem表,结构信息如下:

2、contest_problem为比赛-题目关系; contest_problem表如下图(仅显示前几条):

现已构建contest_problem表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########

SELECT DISTINCT problem.problem_id,title,description,hint,time_limit,memory_limit 
FROM problem,contest_problem A,contest_problem B
WHERE A.problem_id = 1026 AND A.contest_id = B.contest_id AND problem.problem_id = B.problem_id
ORDER BY B.problem_id ASC;

########## End ##########

第7关:用 EXISTS 实现查询做了 1032 号题的选手信息

任务描述

用 EXISTS 实现查询做了 1032 号题的选手信息

相关知识

1、users为选手信息表; users表如下图(仅显示前几条):

现已构建users表,结构信息如下:

2、solution为选手提交的题目解答 solution表如下图(仅显示前几条):

现已构建solution表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########

SELECT DISTINCT users.*
FROM users
WHERE EXISTS (
    SELECT *
    FROM solution
    WHERE users.user_id=solution.user_id
    AND problem_id=1032
);

########## End ##########

第8关:用NOT EXISTS实现查询没做 1032 号题的选手信息

任务描述

用NOT EXISTS实现查询没做 1032 号题的选手信息

相关知识

1、users为选手信息表; users表如下图(仅显示前几条):

现已构建users表,结构信息如下:

2、solution为选手提交的题目解答 solution表如下图(仅显示前几条):

现已构建solution表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin #
SELECT users.*
FROM users
WHERE NOT EXISTS (
    SELECT *
    FROM solution
    WHERE users.user_id=solution.user_id
    AND problem_id=1032
);

########## End ##########

第9关:用 EXISTS 实现查询和problem_id为 1026 的题目属于同一个比赛的题目信息

任务描述

用 EXISTS 实现查询和problem_id为 1026 的题目属于同一个比赛的题目信息,结果按problem_id升序排序。

相关知识

1、problem为题目表; problem表如下图(仅显示前几条):

现已构建problem表,结构信息如下:

2、contest_problem为比赛-题目关系; contest_problem表如下图(仅显示前几条):

现已构建contest_problem表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########

SELECT * 
FROM problem 
WHERE EXISTS(
    SELECT * 
    FROM contest_problem A, contest_problem B
    WHERE A.problem_id = 1026 
    AND A.contest_id = B.contest_id 
    AND problem.problem_id = B.problem_id
)

########## End ##########

第10关:用 NOT EXISTS 实现查询参与过所有比赛的选手信息

任务描述

用 NOT EXISTS 实现查询参与过所有比赛的选手信息

相关知识

1、users为选手信息表; users表如下图(仅显示前几条):

现已构建users表,结构信息如下:

2、contest为比赛信息表; contest表如下图(仅显示前几条):

现已构建contest表,结构信息如下:

3、solution为选手提交的题目解答 solution表如下图(仅显示前几条):

现已构建solution表,结构信息如下:


开始你的任务吧,祝你成功!

sql 复制代码
USE `sqlexp-sztuoj`;
#请在此处添加实现代码
########## Begin ##########
#没有一场比赛没有提交过题目
select *
from users
WHERE NOT EXISTS(
    select *
    #参加过一次比赛
    from contest
    WHERE NOT EXISTS(
        select *
        #提交过一道题目
        from solution     
        where user_id=users.user_id 
        AND contest_id = contest.contest_id
    )
)


########## End ##########
相关推荐
为什么不问问神奇的海螺呢丶2 分钟前
Oracle 数据库对象导出脚本-含创建语句
数据库·oracle
码农阿豪10 分钟前
告别兼容焦虑:电科金仓 KES 如何把 Oracle 的 PL/SQL 和 JSON 业务“接住”
数据库·sql·oracle·json·金仓数据库
曹牧16 分钟前
Oracle SQL 中,& 字符
数据库·sql·oracle
wdfk_prog30 分钟前
[Linux]学习笔记系列 -- [fs]dcache
linux·数据库·笔记·学习·ubuntu
xrl20121 小时前
ruoyi-vue2集成flowable6.7.2后端篇
数据库·ruoyi·flowable·工作流集成
java1234_小锋1 小时前
Redis到底支不支持事务啊?
java·数据库·redis
Cat God 0072 小时前
基于Docker的MySQL 主从复制(读写分离)
mysql·docker·容器
小小测试开发2 小时前
实战派SQL性能优化:从语法层面攻克项目中的性能瓶颈
android·sql·性能优化
云和恩墨2 小时前
告别 “事后救火”:7 大前置动作规避 80% 数据库故障
数据库·oracle
STLearner2 小时前
VLDB 2025 | 时间序列(Time Series)论文总结(预测,异常检测,压缩,自动化等)
数据库·人工智能·深度学习·神经网络·机器学习·数据挖掘·时序数据库