我有两个表
表 1 是:
id | item_id
---------------
1 | a:2:{i:0;s:1:"1";i:1;s:1:"2";}
第二个表是:
tag_id | tag
------------
1 | c
2 | java
序列化后,我将表二的 id 存储在表 1 中。 现在我想通过 mysql %like%
搜索表 1 中的标签,但问题是,如果我想搜索item_id中 id 为 1 或 2 的标签,即使我没有存储 1,但它是由序列化函数存储的,它也总是会找到结果。现在我想知道我该怎么办?任何更好的方法/方法也将不胜感激!
序列化数据不适合搜索。
最好改进表结构:
- 表标记与您的标记相同。
- 表items_tags带结构:
- ID - 自动增量字段
- item_id - 带标签的项目的 ID
- tag_id - 标签 ID
使用以下结构,使用标签搜索项目要容易得多。
添加
Mayankswami,示例查询:对于具有指定标记的所有项目:SELECT item_id FROM items_tags WHERE tag_id=(TAG_ID)
对于项目的标记:SELECT * FROM item_tags AS IT LEFT JOIN tags AS T ON T.id=IT.tag_id WHERE item_id=(ITEM_ID)