在mysql中选择删除

时间:2011-06-09 18:02:42

标签: mysql sql

我有3列(id,parent,value),包含一些数据和此查询:

SELECT * FROM test WHERE id = (
    SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1
);

上面的查询效果很好。

现在如何删除而不是在一个查询中选择该ID?

2 个答案:

答案 0 :(得分:9)

您无法从表中删除并从子选择中的同一个表中进行选择。

但是,您可以在自联接中使用该表。

DELETE t1 FROM test t1
INNER JOIN test t2 ON (t1.id = t2.parent)
WHERE t2.id = 2 and t2.value = 'value'

您无法在已加入的删除声明中使用limit而非order by 这是加入或限制/订单,请选择。

请参阅:http://dev.mysql.com/doc/refman/5.5/en/delete.html

答案 1 :(得分:4)

DELETE FROM test WHERE id = ( select * from (
    SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1 ) as t
)