MySQL:​​DELETE 语句带别名(Alias)示例

概述

  • 在 MySQL 中,DELETE 语句支持别名(Alias),但语法要求较为严格。如果错误使用别名,会触发 You have an error in your SQL syntax 报错。以下是详细说明和解决方案
  • 资料已经分类整理好,喜欢的朋友自取:https://pan.quark.cn/s/f52968c518d3

一、单表删除:正确使用别名

错误写法 ❌

-- 直接给表名加别名会报错
DELETE FROM table_name AS t WHERE t.id = 1;

正确写法 ✅

-- 语法:DELETE [别名] FROM [表名] AS [别名] WHERE ...
DELETE t FROM table_name AS t WHERE t.id = 1;

原理
DELETE 后必须直接跟别名(如 t),再通过 FROM 指定原始表名并赋予别名。

• WHERE 条件中通过别名引用字段。


二、多表删除:明确指定删除目标

如果需要删除多个表中的数据,需在 DELETE 后明确指定要删除的表的别名。

示例

-- 删除 t1 和 t2 中的匹配数据
DELETE t1, t2
FROM table1 AS t1
JOIN table2 AS t2 ON t1.id = t2.id
WHERE t1.status = 'expired';

三、常见错误场景

  1. 别名写在 FROM
-- ❌ 报错:别名未正确关联到 DELETE
DELETE FROM table_name AS t WHERE t.id = 1;
  1. 未在 DELETE 后指定别名
-- ❌ 报错:无法识别别名 t
DELETE FROM table_name AS t WHERE t.id = 1;

四、兼容性说明

• MySQL 5.1+ 均支持别名语法。

• 如果使用旧版本(如 MySQL 5.0),建议升级或改用无别名的原始表名操作。


五、完整示例

  1. 创建测试表
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);
INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie');
  1. 使用别名删除数据
-- 删除 id=2 的记录
DELETE u
FROM users AS u
WHERE u.id = 2;
  1. 验证结果
SELECT * FROM users;
-- 输出:id=1 和 id=3 的记录保留

六、总结

• 单表删除:DELETE [别名] FROM [表名] AS [别名] WHERE ...

• 多表删除:DELETE [别名1], [别名2] FROM ... JOIN ... WHERE ...

• 避免将别名直接写在 FROM 后,需在 DELETE 后明确指定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值