Альтернатива в операторе в MySQL
В операторе я вижу альтернативу в MySQL
У меня почти 25,000
Идентификаторы. Я использую in
Оператор на этом. Затем я получаю Stackru Exception
. Есть ли другая альтернатива для оператора IN в MySQL.
Заранее спасибо..
2 ответа
Если идентификаторы находятся в другой таблице:
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
тогда вы можете использовать соединение вместо:
SELECT table1.* FROM table1 INNER JOIN table2 ON table1.id = table2.id;
Вы можете сделать следующее:
1 - Создать временную таблицу MySQL
CREATE TEMPORARY TABLE tempIdTable (id int unsigned not null primary key);
2 - Вставьте все свои идентификаторы во временную таблицу
Для каждого идентификатора в вашем списке:
insert ignore into myId (id) values (anId);
(это будет иметь дополнительный бонус от дедупликации вашего списка идентификаторов, готовых к последнему шагу)
3 - Присоединиться к временному столу
SELECT t1.* FROM myTable1 t1 INNER JOIN tempIdTable tt ON t1.id = tt.id;
Временная таблица исчезнет, как только ваше соединение будет разорвано, так что вам не нужно беспокоиться о его отбрасывании, прежде чем создавать его в следующий раз.