MySQL DELETE 表別名問題

神諭丶發表於2015-09-02
版本是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部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-1789583/,如需轉載,請註明出處,否則將追究法律責任。

相關文章