1

我在 mysql 中看到In 运算符替代

我几乎有ids。我25,000正在使用in操作符。然后我得到了。mysqlStackoverflow Exception中的 IN 操作符还有其他选择吗?

提前致谢..

4

2 回答 2

3

如果 ID 在另一个表中:

SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

那么你可以使用 join 代替:

SELECT table1.* FROM table1 INNER JOIN table2 ON table1.id = table2.id;
于 2013-05-15T10:47:23.267 回答
1

您可以执行以下操作:

1 - 创建一个MySQL 临时表

CREATE TEMPORARY TABLE tempIdTable (id int unsigned not null primary key);

2 - 将您的所有 id 插入临时表

对于列表中的每个 id:

insert ignore into myId (id) values (anId);

(这将有额外的好处,即为最后一步准备去重复您的 id 列表)

3 - 加入临时表

SELECT t1.* FROM myTable1 t1 INNER JOIN tempIdTable tt ON t1.id = tt.id;

一旦您的连接断开,临时表就会消失,因此您不必担心在下次创建它之前将其删除。

于 2013-05-15T11:00:55.397 回答