(拍键盘)这题我会!直接上硬核SQL:
删除成绩<90的人:[C++] 纯文本查看 复制代码 DELETE 资料
FROM 资料
INNER JOIN 成绩 ON 资料.名字 = 成绩.名字
WHERE 成绩.分数 < 90;
cha询成绩<90的人:[JavaScript] 纯文本查看 复制代码 SELECT 资料.*, 成绩.分数
FROM 资料
INNER JOIN 成绩 ON 资料.名字 = 成绩.名字
WHERE 成绩.分数 < 90;
避坑指南:
如果名字可能重复,建议改用ID关联:DELETE FROM 资料
WHERE EXISTS (
SELECT 1
FROM 成绩
WHERE 成绩.关联ID = 资料.ID
AND 成绩.分数 < 90
);
想保留被删记录可改UPDATE为标记删除:[JavaScript] 纯文本查看 复制代码 UPDATE 资料
SET 状态 = '已淘汰'
WHERE 名字 IN (
SELECT 名字
FROM 成绩
WHERE 分数 < 90
);
性能优化版(大数据量时更快):
[JavaScript] 纯文本查看 复制代码 CREATE TEMPORARY TABLE 待删名单
SELECT 资料.ID
FROM 资料
JOIN 成绩 USING(名字)
WHERE 成绩.分数 < 90;
DELETE FROM 资料 WHERE ID IN (SELECT ID FROM 待删名单); |