mysql | Запрос из пустого столбца и FIND_IN_SET

У меня есть стол:

id  name   position   status
1   A      1,2        1
2   B      1          1
3   C                 1
4   D      2          1

Куда: position столбец - текстовое поле; Моя просьба здесь:

SELECT `id` 
FROM  `table` 
WHERE `status`=1
AND `position` >  ''
AND `position` = FIND_IN_SET( 1,  `position` ) 
OR  `position` = FIND_IN_SET( 2,  `position` ) 

Этот запрос вернет: 1,2,3,4. Это неправильно, так как мне нужно: 1,2,4 -> Состояние: (position > ''). Где проблема и как изменить мой запрос? Благодарю.

1 ответ

Решение

Вам не нужно проверять, если позиция пуста, пока вы проверяете числа в списке полей.

вам не нужно проверять position = FIND_IN_SET...., он вернет значение, где 1 находится в положении.

вам нужно сделать это так:

 SELECT `id` 
 FROM  `table` 
 WHERE `status`=1
 AND  FIND_IN_SET( 1,  `position` ) 
 OR   FIND_IN_SET( 2,  `position` ) 

ДЕМО ЗДЕСЬ

Другие вопросы по тегам