'尝试从mysql中删除重复行时无法重新打开表<temporary table =“”>'</temporary>

时间:2013-12-21 09:58:45

标签: mysql

以下查询将错误抛出为

  

无法重新开启表格

DELETE FROM _temptable
WHERE RowNo > 
(
    SELECT * FROM 
    (
    SELECT MIN(RowNo) 
    FROM _temptable
    WHERE Status= 'Deleted'
    ) X
);

2 个答案:

答案 0 :(得分:0)

您不能在同一查询中多次引用临时表。

从这里提取:http://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html

答案 1 :(得分:0)

如果您没有使用临时表,则会收到错误1093。 Mysql 5.0 Subquery Errors上的人暗示您必须将其分解为两个陈述,例如:

SET @minRowNo = (SELECT MIN(RowNo) FROM _temptable WHERE Status = 'Deleted');
DELETE FROM _temptable WHERE RowNo > @minRowNo;

虽然我确实想知道你要做的是删除高于第一行删除的所有行,但删除的行保持不变......