DELETE基于select

时间:2017-07-25 13:38:53

标签: mysql sql select sql-delete

我有一个非常复杂的SELECT,它使用id填充临时表,基于此我需要创建DELETE查询。

例如,临时表的行如下所示:

- first_id | second_id | third_id
 - 1   | 222 | 342
 - 1   | 222 | 343
 - 1   | 223 | 551
  • ...

并查询:

DELETE FROM mytable WHERE CONCAT(first_id, 'X', second_id, 'X', third_id) IN (SELECT CONCAT(first_id, 'X', second_id, 'X', third_id) FROM temp_table);

但是这个查询太长了。当我显示PROCESSLIST时,我看到此查询时间大约是4000秒。

所以我的问题是,如何优化DELETE查询,根据select FROM另一个表从一个表中删除行,并删除基于3个键的行?

1 个答案:

答案 0 :(得分:0)

您可以先删除input()并使用CONCAT代替子查询,尝试以下内容:

JOIN