mysql能否实现如下情况的精确查询?
表article设计如下:
id(int[6])
user_id(varchar[30])这个字段存储的值类似:1或者1,19或者2,3,11
title(varchar[200])
现在只希望将user_id为1的title搜出来,如果按下面这个搜索:
select title from article where user_id like '%1%'
则会将包含数字1但不一定是user_id为1的文章也给搜出来了,想知道mysql能否在搜索的时候指定这个1前面和后面要么什么都没有,要么只能有 , 号?
请高手指教,谢谢!
追问:但对于值为 1,19的这种情况,你这个就不行了吧?我是要查user_id为1的所有的文章,你这样写,那user_id为19的也被查出来了。。。
答案:如果要在现有基础上修改,比较简单的方法,建议你在存储这个userid的时候,在程序中生成这种格式再存入数据库,即
,1,2,3,19,11,
也就是保证前后一定都有,
这样你搜索的时候,如果查id为1的,就可以简单的用user_id like '%,1,%' 或者user_id like '%,1,%' or user_id like '%,9,%'
或者建议更改数据库设计,增加一个article-user表,它的字段为
articleid userid
这样比如对应article的id为100的,在数据库中就可能是
articleid userid
100 2
100 3
100 11
其他:select title from article where user_id = '1';就行了么~ select title from article
where user_id = ‘1’
or user_id like '1,%'
or user_id like '%,1'
or user_id like '%,1,%'
其实我还是没明白你想要的是什么
上一个:MYSQL 中的一个问题:
下一个:mysql 语句