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 直接来加上这个别名.

  • 相关阅读:
    Spring RestTemplate详解(转载)
    单点登录之CAS原理和实现(转载)
    Redis集群的原理和搭建(转载)
    50道Kafka面试题和解析(转载)
    阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别(转载)
    定期喝鸡汤
    Cassandra的架构
    Cassandra的数据模型
    Summary of OAuth 2.0
    林森
  • 原文地址:https://www.cnblogs.com/lu97/p/14998803.html
Copyright © 2011-2022 走看看