Как использовать следующую переменную контента для запроса IN ...Использование переменных для IN Операции
SET @var = '1,2,3';
SELECT * FROM Table WHERE ID IN (@var);
Как использовать следующую переменную контента для запроса IN ...Использование переменных для IN Операции
SET @var = '1,2,3';
SELECT * FROM Table WHERE ID IN (@var);
Решение было найдено, глядя на this answer
SET @var = '1,2,3';
SET @Expression=CONCAT('SELECT * FROM TableWHERE ID IN (',@var,')');
PREPARE myquery FROM @Expression;
EXECUTE myquery
Используйте РЕГИСТРИРУЙТЕСЬ
SELECT t1.*
FROM Table t1
JOIN Table t2 on t1.OtherID = t2.OtherID
WHERE t2.X = 1
Вы можете присоединиться к одному и тому же столу. Я обновил свой запрос –
@ Барри, что вы подразумеваете под _much, намного быстрее_? можете ли вы предоставить некоторые цифры? для меня единственная причина, по которой этот трюк может быть быстрее, - вы просто не правильно протестировали кеширование mysql. поэтому попробуйте запустить оба запроса с помощью 'SQL_NO_CACHE', чтобы увидеть оригинальную производительность каждого из них. – Alex
@Barry: И используя мой запрос все еще медленно? Затем добавьте индекс в столбец 'X'. Это должно решить вашу проблему –
Показать схему ваших таблиц – 1000111
у вас нет 'GROUP BY' или' DISTINCT' в исходном запросе 'SELECT OtherID FROM Table WHERE X = 1', поэтому он не эквивалентен на 100%. – Alex
Я редактировал (а не удалял) свой вопрос, чтобы сосредоточить его на главном элементе вопроса ... существующий ответ пытался сосредоточиться на неправильной части .. вот почему это уже не актуально. – Barry