我有3列(id,parent,value),包含一些数据和此查询:
SELECT * FROM test WHERE id = (
SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1
);
上面的查询效果很好。
现在如何删除而不是在一个查询中选择该ID?
答案 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
这是加入或限制/订单,请选择。
答案 1 :(得分:4)
DELETE FROM test WHERE id = ( select * from (
SELECT parent FROM test WHERE id=2 AND value='value' LIMIT 1 ) as t
)