MySQL как несколько значений
у меня есть этот запрос MySQL.
у меня есть поля базы данных с этим содержание
sports,shopping,pool,pc,games
shopping,pool,pc,games
sports,pub,swimming, pool, pc, games
почему это как запрос не работает? Мне нужны поля либо со спортом, либо с пабом,либо с обоими?
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
7 ответов:
The
(a,b,c)
список работает только сin
. Ибоlike
, вы должны использоватьor
:WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
быстрый способ сделать это:
WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
это:
WHERE interests REGEXP 'sports|pub'
нашел это решение здесь:http://forums.mysql.com/read.php?10,392332, 392950#msg-392950
подробнее о регулярном выражении здесь:http://www.tutorialspoint.com/mysql/mysql-regexps.htm
почему бы вам не попробовать регулярное выражение. Попробуйте это так:
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
ваш запрос должен быть
SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
Я понимаю, что вы храните интересы в одном поле таблицы, которое является заблуждением. Вы должны окончательно иметь таблицу "интерес".
Не забывайте использовать скобки, если вы используете эту функцию после
AND
параметртакой:
WHERE id=123 and(interests LIKE '%sports%' OR interests LIKE '%pub%')
Как предложил @Alexis Dufrenoy, запрос может быть:
SELECT * FROM `table` WHERE find_in_set('sports', interests)>0 OR find_in_set('pub', interests)>0
дополнительная информация в руководство.