mysql从序列化数组中搜索类别

时间:2014-01-03 17:32:25

标签: mysql

我有一个表'users_category'

'users_category' : id, prefix, name

和表'用户'

'users' : categories, etc...

其中users.categories是users_category.id ids数组

用户可以是任何类别的一部分,如果我将它们所属的类别数组存储为序列化数组,我该如何运行查询以检查它们是否属于“类别x”

例如:

SELECT users.*, users_category.* FROM 'users', 'users_category' WHERE users.categories='category x' AND users_category.id = 'category x'

我无法运行'LIKE'命令,因为users.categories是序列化的。他们是否可以在序列化数据中进行搜索。另外我知道上面的查询可能有错误

1 个答案:

答案 0 :(得分:0)

即使规范化表格结构是一种更好的前进方式,但如果此时采用该路线不是最佳的,那么您可以尝试这个查询:

SELECT u.*, uc.* 
FROM users u, users_category uc
WHERE uc.name='X' AND FIND_IN_SET(uc.id, u.categories)

它使用mysql函数FIND_IN_SET()

工作演示位于:http://sqlfiddle.com/#!2/7f392/3