ITPub博客

首页 > 数据库 > MySQL > MySQL DELETE 表别名问题

MySQL DELETE 表别名问题

原创 MySQL 作者:神谕丶 时间:2015-09-02 16:54:52 0 删除 编辑
版本是mysql 5.6(5.5在这个问题上也一样,已测试)

随手做一个实验(随手拿的一台机子,创表居然0.2s)
mysql> USE test;        
Database changed
mysql> CREATE TABLE test(id int);
Query OK, 0 rows affected (0.21 sec)

mysql> INSERT INTO test VALUES (1);
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO test VALUES (2);
Query OK, 1 row affected (0.03 sec)


尝试做使用别名的删除操作:
mysql> DELETE FROM test a    
    -> WHERE a.id=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a 
WHERE a.id=1' at line 1

查了一下5.6的手册:
语法如下,符合sql标准(sql标准也支持 DELETE * FROM table_name)


继续往下翻:


发现官方给出了多表+表别名的DELETE语法。

此处用单表测试:
删除成功。
mysql> DELETE a FROM test a
    -> WHERE a.id=1;
Query OK, 1 row affected (0.04 sec)


mysql> SELECT * FROM test;
+------+
| id   |
+------+
|    2 |
+------+
1 rows in set (0.00 sec)

当然还尝试了一下第二种写法,通过USING(语法很怪……)

mysql> DELETE FROM a USING test a 
    -> WHERE a.id=2;
Query OK, 1 row affected (0.03 sec)

同样删除成功。


作者公众号(持续更新)



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29773961/viewspace-1789583/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
微信公众号:神谕的暗影长廊

注册时间:2014-07-28

  • 博文量
    161
  • 访问量
    1195299