在mysql中的运算符的替代

时间:2013-05-15 10:40:48

标签: mysql in-operator

我看到In operator alternative in mysql

我有近25,000个ID。我正在使用in运算符。然后我得到Stackoverflow Exception。对于mysql中的IN运算符是否还有其他选择。

提前致谢..

2 个答案:

答案 0 :(得分:3)

如果ID在另一个表中:

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

然后您可以使用连接:

SELECT table1.* FROM table1 INNER JOIN table2 ON table1.id = table2.id;

答案 1 :(得分:1)

您可以执行以下操作:

1 - 创建MySQL Temporary Table

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;

一旦你的连接被删除,临时表就会消失,所以你不必担心在下次创建它之前丢弃它。