我正在构建一个AJAX调用,它将一组变量(ids)传递给一个函数,如果这个id存在于它们的'catid'单元中,它将查询数据库以返回行。
我知道如何使用数组来使用'IN'MYSQL命令,但在这种情况下,有一些行存储在单元格中的id,用逗号分隔。它存储为varchar。 有什么方法可以循环存储在行类别单元格中的各个ID吗?
以下是数据库中示例行的屏幕截图。我已经突出显示了行的'catid'单元格。如您所见,一行可以是许多类别的一部分,这些类别ID由逗号分隔)...
答案 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>