我已经完成了搜索,但我找到的所有内容都与我需要的方式相反。
我有一个数据库,其中一个字段是一串ID,我想在数据库中搜索该数组中的某个ID。
例如,在数据库中它看起来像这样:
ID Title Spots Used
1 test 1 1,3,5,8
2 test 2 4,2,5,6,7
3 test 3 3,5,2,1
我需要搜索有多少广告系列使用ID为2的广告(应该同时返回测试2和测试3)。
最好的方法是什么?到目前为止,我可以查询整个事情,逐行运行,并进行strpos
搜索号码,但问题是,当我最终上传超过10个点时,1将返回1,10 ,11,12,13等。
如果我需要提供更多信息,请告诉我。
答案 0 :(得分:3)
如果这些ID以逗号分隔存储,则可以使用FIND_IN_SET()
SELECT * FROM `table` WHERE FIND_IN_SET('2',`column_name`) >0
但是,如果您能够更改模式然后首先规范化表结构,那么存储逗号分隔值是个坏主意
答案 1 :(得分:0)
你可以只在一个表中拥有所有内容,但是对于关系数据库有什么好处,
创建另外两个表,一个是Spot(id,spot_number),另一个是Campaigns_spot(id_campaign,id_spot),让sql引擎用查询来做,这种方式效率更高,你要去使用适当的数据库关系。
然后查询将是
select count(*) from campaign_spot where id_spot= X (whatever number you want).