Mysql:使用Like来计算逗号分隔值

jnb*_*nbn 0 php mysql csv explode

我决定使用favs(标记该帖子作为收藏的用户的id)作为favs列中的逗号分隔列表,该列也在发送者,网址,内容等的消息表中.

但是,当我尝试用以下查询计算这些行时:

select count(id) 
from messages 
where favs like '%userid%' 
Run Code Online (Sandbox Code Playgroud)

当然它会返回错误的结果,因为所有id都可能是另一个id的一部分

例如,在查询id = 1时,它还会增加用户ID 11所支持的任何其他内容的计数器...

你能告诉我你的想法或任何使这个系统有效的解决方案吗?

小智 5

有几个或者你可以有一个丑陋的解决方案:

select count(id) from messages where favs like 'userid,%' or favs like '%,userid,%' or favs like '%,userid'
Run Code Online (Sandbox Code Playgroud)

可能会有一个更优雅的解决方案,但我相信,至少会找回你想要的结果.