【问题标题】:delete from table1,table2,table3 where?从表1,表2,表3删除哪里?
【发布时间】:2010-10-07 04:12:20
【问题描述】:

如果我要删除的所有表都包含 gamer_id 列

我可以从 table1、table2、table3 中删除 gamer_id = 123 吗?

还是有不同的语法?

【问题讨论】:

  • 哪个 RDBMS?它可以在 Postgres 中完成,但不能在 SQL Server 中完成。

标签: sql mysql multi-table-delete


【解决方案1】:

MySQL 支持multi-table deletes:

DELETE t1, t2, t3
  FROM TABLE_1 t1
  JOIN TABLE_2 t2 ON t2.gamer_id = t1.gamer_id
  JOIN TABLE_3 t3 ON t3.gamer_id = t1.gamer_id
 WHERE t1.gamer_id = 123

【讨论】:

  • 没有join就没有办法了吗?
  • @Hailwood:我看不出有必要——联接将包括每个相应表中的行,其中 gamer_id 是您指定的。还是三个表之一中可能不存在gamer_id 的问题?
  • 它更多的是性能问题,因为每个表中将有大约 80 行匹配,这是否意味着它将执行 80^3 连接 = 512 000 连接?
  • @Hailwood:我认为每张桌子有 80 行,乘以 3 = 240 行。您不必使用多表删除,一次处理一个表的删除。
  • 我以为它对每一行都做了一个连接,所以它不是靠它的力量吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
相关资源
最近更新 更多