0

我想删除 t3 中缺少 t2 中的字段名称的所有记录,但前提是它们满足 t1 中的某个记录 id。

t1 的查询:

SELECT MAX(id) FROM t1 WHERE name1 = "XXX" AND user_id = '$id'

工作正常。

t2 查询:

SELECT name2 FROM t2 WHERE record IN (SELECT MAX(id) FROM t1 WHERE name1 = "XXX" AND user_id = '$id')

也可以正常工作,但需要一段时间。

但是 t3 查询:

DELETE FROM t3 WHERE name3 NOT IN (SELECT name2 FROM t2 WHERE record IN (SELECT MAX(id) FROM t1 WHERE name1 = "XXX" AND user_id = '$id'));

结果“#2006 - MySQL 服务器已消失”

如何在合理的时间内得到我的查询结果?

4

2 回答 2

1

我认为您可以改用联接查询吗?

select name2, MAX(t1.id) 
from t2
inner join t1
on t2.t1_id = t1.id
where name1="XXX" AND user_id='$id'
于 2013-07-11T09:58:44.710 回答
0

您可以使用要删除的记录来准备表,而不是使用子查询 - 在存储的过程中或类似的东西中。

当然索引;)

于 2013-07-11T09:54:09.050 回答