Пользовательская переменная mysql внутри оператора IN, где - PullRequest
3 голосов
/ 06 февраля 2012

Теперь я сдался и отсортировал его другими способами, но из-за того, что «любопытство убило кошку», я пытаюсь понять, как использовать запрос mysql @variables внутри оператора IN where:

Итак, из этого:

SELECT * FROM table1 WHERE table1.ID IN (794,758)

Попробуйте включить переменную, и это возвращает синтаксическую ошибку:

SET @variousids="(794,758)";
SELECT * FROM table1 WHERE table1.ID IN @variousids

Возвращает значения только с первого:

SET @variousids="794,758";
SELECT * FROM table1 WHERE table1.ID IN (@variousids)

Я пробовал другой синтаксис, значения и не нашел никакого конкретного документа по определению списка значений.

Ответы [ 3 ]

4 голосов
/ 06 февраля 2012

Используйте find_in_set. Ниже будет работать.

SET @variousids="794,758";
SELECT * FROM table1 WHERE find_in_set(table1.ID,@variousids)
1 голос
/ 06 февраля 2012

Попробуйте: -

SET @variousids="794,758";
SELECT * FROM table1 WHERE table1.ID FIND_IN_SET (table1.ID,@variousids)
0 голосов
/ 06 февраля 2012

Использовать динамический SQL:

SET @variousids="794,758";
prepare stmt from 'SELECT * FROM table1 WHERE table1.ID IN ( ? )'
execute stmt using @variousids;

Для получения дополнительной информации, проверьте ЭТОТ артикул.

...