zoukankan      html  css  js  c++  java
  • 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 直接来加上这个别名.

  • 相关阅读:
    rollback
    引用类型(C# 参考)
    委托(C# 编程指南)
    解决“在证书存储区中找不到清单签名证书”
    C#语法——委托,架构的血液
    广东IP段列表
    mysql字段类型
    linux远程管理工具:putty
    SQL yog过期后教你怎么让他不过期
    js实现的美女瀑布流效果代码
  • 原文地址:https://www.cnblogs.com/lu97/p/14998803.html
Copyright © 2011-2022 走看看