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%')
(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'
在这里find这个解决scheme: http : //forums.mysql.com/read.php?10,392332,392950#msg-392950
更多关于REGEXP在这里: http ://www.tutorialspoint.com/mysql/mysql-regexps.htm
你为什么不尝试REGEXP。 试试像这样:
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
你的查询应该是SELECT * FROM `table` WHERE find_in_set("sports", interests)>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
手册中的更多信息。