SQL实战:子查询的应用实例

简介: SQL实战:子查询的应用实例
  • 本实例设计到的SQL语法包括:
select ,
delete,
distict,
not exists,
not in,
group by,
having,
min,
max
  • 创建成绩表:
CREATE TABLE score(
id INT NOT NULL AUTO_INCREMENT,
NAME VARCHAR(100) NOT NULL,
course VARCHAR(40) NOT NULL,
score INT,
PRIMARY KEY ( id )
);
  • 插入数据:
INSERT INTO score 
(NAME,course,score) VALUES
('张三','语文','81'),
('张三','数学','75'),
('李四','语文','56'),
('李四','数学','76'),
('李四','数学','76'),
('王五','语文','89'),
('王五','语文','89'),
('马六','数学','99')
;
  • 问题1: 用一条SQL 语句,查询出每门课都大于80分的学生姓名.

答:

1.
SELECT DISTINCT NAME FROM score s WHERE
NOT EXISTS
(SELECT 1 FROM score si WHERE si.score<80 AND si.name=s.name); 
2.
SELECT DISTINCT NAME FROM score WHERE NAME 
NOT IN 
(SELECT DISTINCT NAME FROM score WHERE score<=80);
3.
SELECT NAME FROM score GROUP BY NAME HAVING MIN(score)>80; 
  • 问题2: 删除除id不同, 其他都相同的冗余信息。

答:
因为MySQL语法规定,在同一语句中,不能先SELECT出同一表中的某些值,再UPDATE这个表(You can NOT specify target TABLE 'score' FOR UPDATE IN FROM clause。),因此需要写两个子查询。
用NOT IN或NOT EXISTS都可以达到目的,MIN或MAX函数确定保留冗余数据中最小或最大的那一条数据。

1.
DELETE FROM score 
WHERE id NOT IN
(
SELECT id FROM
(SELECT MIN(si.id) FROM score si GROUP BY si.name,si.course,si.score) ss
)
;
2.
DELETE s FROM score s
WHERE NOT EXISTS
(
 SELECT idi FROM
 (SELECT MAX(si.id) idi FROM score si GROUP BY si.name,si.course,si.score) ss
 WHERE s.id=ss.idi
)
;
目录
相关文章
|
1月前
|
SQL 数据库 开发者
MSSQL性能调优实战技巧:索引优化、SQL语句微调与并发控制策略
在Microsoft SQL Server(MSSQL)的管理与优化中,性能调优是一项复杂但至关重要的任务
|
24天前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
48 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
|
17天前
|
SQL
什么是SQL中的子查询?
【8月更文挑战第2天】什么是SQL中的子查询?
13 1
|
21天前
|
SQL 存储 API
ES 实战复杂sql查询、修改字段类型
ES 实战复杂sql查询、修改字段类型
30 1
|
22天前
|
SQL 存储 安全
SQL数据库:核心原理、应用实践与未来展望
在电子商务领域,SQL数据库用于存储商品信息、用户信息、订单信息等。通过SQL数据库,电商平台可以实现商品的快速检索、用户行为的跟踪分析、订单状态的实时更新等功能,提升用户体验和运营效率。
|
1月前
|
SQL 索引
SQL DELETE 实例
【7月更文挑战第12天】SQL DELETE 实例。
35 12
|
1月前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行多条SQL语句时,使用同一个实例来运行,遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
1月前
|
SQL 索引
SQL DELETE 实例
【7月更文挑战第13天】SQL DELETE 实例。
38 6
|
1月前
|
SQL
SQL LIKE 操作符实例
【7月更文挑战第13天】SQL LIKE 操作符实例
19 5