我想编写一个从x表和y表中删除的查询,其中object id =“123”从z表中为'z'表中的给定名称选择对象id。如何为此编写一个sql查询?
请告诉我。
答案 0 :(得分:3)
您无法一次从两个表中删除。你需要两个删除语句。
DELETE
x
WHERE
object_id IN (SELECT object_id FROM z WHERE name = 'whatever')
DELETE
y
WHERE
object_id IN (SELECT object_id FROM z WHERE name = 'whatever')
我已经使用了IN
,以防您有多个具有相同名称的对象。您可能希望根据自己的需要更改该行为。
答案 1 :(得分:3)
试试这个..
delete t1,t2 from x t1 inner join y t2 on t1.id=t2.id where t1.id in
(SELECT object_id FROM z WHERE name = 'YourName');
在Mysql
上进行测试。
答案 2 :(得分:0)
从单个批处理(池)中的不同表中删除是一个同步过程,即它逐个执行,因此您需要编写2个不同的查询来根据您的要求删除任何数据。
假设给定名称只有1个数据
删除X
WHERE object_id = object_id FROM Z WHERE name ='name'
删除y
WHERE object_id = object_id FROM z WHERE name ='name'
这比“IN”
提供更好的性能如果您有一个名称的多个记录,那么您必须使用'IN'