我有一个表'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是序列化的。他们是否可以在序列化数据中进行搜索。另外我知道上面的查询可能有错误
答案 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()。