2016-09-18 8 views
0

У меня есть строковая переменная @IDS, и я пытаюсь отфильтровать записи из таблицы user, но ничего не помогает мне, так как я новичок в MySql.Фильтровать записи с помощью строки, разделенной запятой

SET @IDS = '1,2,3'; 
select * from user where find_in_set(@IDS,ID); 
+2

Насколько сложно читать руководство самостоятельно, чтобы убедиться, что вы правильно используете функцию? – Barmar

ответ

1

Вы должны изменить порядок параметров:

SELECT * 
FROM user 
WHERE FIND_IN_SET(ID, @IDS); 

От documentation:

FIND_IN_SET (ул, strlist)
Возвращает значение в диапазоне от 1 к N, если строка str находится в списке строк списка, состоящем из N подстрок

Другими словами, первый параметр - это строка, которую вы пытаетесь найти в списке строк CSV, который является вторым параметром. Если ID может быть найден в @IDS, тогда будет возвращен указатель (начиная с одного), который будет соответствовать. Если совпадение не найдено, то возвращается ноль.