MYSQL从DB中搜索数组中的ID

时间:2014-05-06 21:23:08

标签: php mysql sql arrays search

我已经完成了搜索,但我找到的所有内容都与我需要的方式相反。

我有一个数据库,其中一个字段是一串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等。

如果我需要提供更多信息,请告诉我。

2 个答案:

答案 0 :(得分:3)

如果这些ID以逗号分隔存储,则可以使用FIND_IN_SET()

SELECT * FROM `table` WHERE FIND_IN_SET('2',`column_name`) >0

但是,如果您能够更改模式然后首先规范化表结构,那么存储逗号分隔值是个坏主意

Database Normalization

答案 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).