我看到In operator alternative in mysql
我有近25,000
个ID。我正在使用in
运算符。然后我得到Stackoverflow Exception
。对于mysql中的IN运算符是否还有其他选择。
提前致谢..
答案 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;
一旦你的连接被删除,临时表就会消失,所以你不必担心在下次创建它之前丢弃它。