2012-02-06 2 views
3

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

Таким образом, из этого:

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

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

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

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

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

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

ответ

1

Try: -

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

Спасибо, как раз собирался писать о том, что было решение, которое я нашел. – luison

+1

Это дает мне ошибку, в то время как в другом ответе работает ... «table1.ID» сразу после того, где не может быть использовано в MySQL 5.7 – Kukeltje

0

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

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

Для получения дополнительной информации, проверьте THIS статью.

3

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

SET @variousids="794,758"; 
SELECT * FROM table1 WHERE find_in_set(table1.ID,@variousids) 
Смежные вопросы