可以用like关键字:
select * from 优惠券表 left join 商户表 on 优惠券表.shopidstr like concat('%,',商户表.shopid,',%')
试了,这个可以学习了!
首先,现代的数据库叫做"关系型数据库", 它的理念应该是透过关系来实现数据的关联, 也就是说, 当你开设分店时, 你应该再建一张子表, 而不是像这样把这些都放进一个字段里.
其次, 要达到你想要的效果不是做不到, 但是你的语句肯定不行. 写进来也比较麻烦, 建议最好不要这样弄, 改为建一张子表.
我的意思不是建分店哦。。分店肯定有新建表, 这个字段是券表里的,之前是一张券对应一商户,现在一券在多个店都能显示,避免重复添加, 就是列表查询的时候遇到上述问题~
@BiakeChou:
我知道你的分店是单独的表.....
我意思是说, 你的需求发生了变化, 你应该单独建一张这张表的子表, 用于表达它跟分店之间的这种一对多的关系, 也就是说, 用一张表来取代这个字段. 这不存在任何重复添加的问题.
@夏狼哉: 懂你意思了 做的时候我也是想这样多加一张表 用券ID 对应 商户ID 就2个字段,再来个一对多就解决了,但是想想为了2个字段多一张表,增删改查都会多一操作一个表,工作量也上去。当然对关系方面不是太专业,是否是有新关系的时候最好是多一张表,哪怕字段只有少数几个,sql操作上会多几步?
@BiakeChou:
多一张表工作量有多少增加?这一点我表示不理解。。。相反,拼接字符串的操作更麻烦才对。
最后一句你说得对,数据库的“专业”就是处理表,你不要觉得增加一张表代价很大,相反,用LIKE去做模糊搜索的代价才大得多。而且对数据建模来说,大字段也完全把模型破坏了。
@夏狼哉: 恩 了解了 谢谢你的建议噢~