随手做一个实验(随手拿的一台机子,创表居然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)
同样删除成功。
作者公众号(持续更新)
