@nicklayk

MySQL Как правильно выбрать из базы строки с вхождением?

У меня в базе данных есть два поля.

Например:

Содержимое поля 1: 1, 2, 6
Содержимое поля 2: 1, 3, 6

Есть id.

Как мне получить из базы строки, в поле 1 которых id входит, в поле 2 не входит.

LIKE, NOT LIKE не подходит, потому что под них придется перестроить базу и писать ;1;2;3;, вместо 1, 2, 3
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
SELECT *
FROM `table` 
WHERE 1
	AND FIND_IN_SET('1', `field`) > 0
	AND FIND_IN_SET('2', `field`) = 0


Альтернативный вариант:
SELECT *
FROM `table` 
WHERE (
    (`field` LIKE '1,%' OR `field` LIKE '%,1,%' OR `field` LIKE '%,1') AND
    (`field` NOT LIKE '2,%' AND `field` NOT LIKE '%,2,%' AND `field` NOT LIKE '%,2') 
)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Перейти на PostgreSQL который поддерживает тип массив https://postgrespro.ru/docs/postgrespro/9.6/arrays
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы