我想编写一个查询以从 x 表和 y 表中删除,其中 object id="123" 从 z 表中为 'z' 表中的给定名称选择对象 id。如何为此编写 sql 查询?
请告诉我 。
您不能同时从两个表中删除。您需要两个删除语句。
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
以防万一您有多个具有相同名称的对象。您可能希望更改该行为以满足您的需要。
尝试这个..
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个不同的查询来根据您的要求删除任何数据。
假设给定名称只有 1 个数据
DELETE X
WHERE object_id = object_id FROM Z WHERE name = 'name'
DELETE y
WHERE object_id = object_id FROM z WHERE name ='name'
这提供了比“IN”更好的性能
好吧,如果您对一个名称有多个记录,那么您必须使用“IN”