读书人

MySql 中的 DELETE 真差劲.该怎么处理

发布时间: 2012-03-12 12:45:32 作者: rapoo

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]

读书人网 >Mysql

热点推荐