MYSQL使用逗号分隔值搜索单元格

时间:2014-05-13 13:41:38

标签: php mysql

我正在构建一个AJAX调用,它将一组变量(ids)传递给一个函数,如果这个id存在于它们的'catid'单元中,它将查询数据库以返回行。

我知道如何使用数组来使用'IN'MYSQL命令,但在这种情况下,有一些行存储在单元格中的id,用逗号分隔。它存储为varchar。 有什么方法可以循环存储在行类别单元格中的各个ID吗?

以下是数据库中示例行的屏幕截图。我已经突出显示了行的'catid'单元格。如您所见,一行可以是许多类别的一部分,这些类别ID由逗号分隔)...

enter image description here

1 个答案:

答案 0 :(得分:1)

这是一个糟糕的数据库设计的标志,您应首先查看Database Normalization,如果您可以更改结构,则首先使用联结表对其进行规范化,截至目前,您可以使用FIND_IN_SET()来在逗号分隔的ids列中找到相应的记录ID

SELECT * FROM table 
WHERE  FIND_IN_SET('id1',column) > 0
AND FIND_IN_SET('id2',column) > 0
AND FIND_IN_SET('id3',column) > 0

根据您的意愿更改操作符我已经使用AND运算符显示示例,请注意您需要使用FIND_IN_SET的次数与数组中需要与列进行比较的数量相同的次数< / p>