MySQL不支持DELETE使用表别名?

时间:2021-07-11
本文章向大家介绍MySQL不支持DELETE使用表别名?,主要包括MySQL不支持DELETE使用表别名?使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

  最近做的需求经常和数据库在打交道, 因为系统页面上某些展示的字段并不是在前端写死的, 而是配置在数据库中, 这样的话便于维护和扩展. 于是遇到了一个MySQL中比较细节性的问题.

  日常开发中不少程序员认为MySQL不支持DELETE数据时使用别名, 之前我也是这么认为的, 但是由于最近的需求中使用delete语句比较多, 字段也比较多(取的字段名是比较奇葩难记住的), 所以想着能不能在delete数据的时候使用别名, 这样便于快速找到作为条件的字段名. 于是搜了一下博客, 发现好多博客也是这样写的, 说MySQL数据库delete数据时不支持使用表别名. 举个例子 如下篇博客:

  这里先说一下我查完资料的结论, MySQL数据库DELETE数据时是可以支持别名的, 只不过没用对罢了.(温馨提示一下: 遇到某个比较疑惑问题的时候, 看博客记得多看几篇, 因为你看的博客有可能不正确, 如上图)

开始验证:(以下只是简单举例子, 实际开发中肯定比这个复杂一些)

现在我需要删除掉联系人表中的记录. 删除的条件根据字段(single_str_node_rule)来删除的.

正常不使用别名时删除:

DELETE FROM contact WHERE single_str_node_rule = 'cd269a75f541a45bb2ec3636c6e3648b';

OK, 这个语句没有问题

 使用别名删除时错误用法:

DELETE FROM contact c WHERE c.single_str_node_rule = 'bc33be06aa8937f4a0354b71eac0abcd';

报错:

使用别名删除正确用法:

DELETE c FROM contact c WHERE c.single_str_node_rule = 'bc33be06aa8937f4a0354b71eac0abcd';

OK, 删除记录成功

得出结论:

MySQL数据库DELETE数据时是可以支持别名的. 只不过需要在DELETE 和 FROM 直接来加上这个别名.

原文地址:https://www.cnblogs.com/lu97/p/14998803.html