MySql 中的 DELETE 真差劲...
这样写正常:
------------------
SELECT id FROM tree WHERE father!=0 AND father NOT IN (SELECT id FROM tree );
这样写出错:
------------------
DELETE FROM tree WHERE father!=0 AND father NOT IN (SELECT id FROM tree );
ERROR 1093 (HY000): You can 't specify target table 'tree ' for update in FROM clause
------解决方案--------------------右侧中写的相当明确:目前,您不能从一个表中删除,同时又在子查询中从同一个表中选择
------解决方案--------------------呵呵~~~~~~~
------解决方案--------------------DELETE FROM tree WHERE father!=0 AND father NOT IN (SELECT id FROM tree );
这样的sql在什么数据库会执行?
都应该不会执行的。
------解决方案--------------------13.2.1. DELETE语法
单表语法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
多表语法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*] ...]
FROM table_references
[WHERE where_definition]
或:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*] ...]
USING table_references
[WHERE where_definition]