查询形成

时间:2012-06-14 10:19:53

标签: mysql sql mybatis

我想编写一个从x表和y表中删除的查询,其中object id =“123”从z表中为'z'表中的给定名称选择对象id。如何为此编写一个sql查询?

请告诉我。

3 个答案:

答案 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'