У меня есть таблица:
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
> ''). Где проблема и как изменить мой запрос? Благодарю.
вам не нужно проверять, является ли позиция пустой при проверке номеров в списке полей.
вам не нужно проверять position = FIND_IN_SET....
он вернет значение, где 1 находится в позиции.
вам нужно сделать это так:
SELECT `id` FROM `table` WHERE `status`=1 AND FIND_IN_SET( 1, `position` ) OR FIND_IN_SET( 2, `position` )
ДЕМО ЗДЕСЬ