我的表就像这样
_________________________________
| product_id | tag_name |
|--------------|------------------|
| 1 | tag1,tag2,tag3 |
| 2 | tag2,tag4,tag6 |
| 3 | tag1,tag3 |
| 4 | tag4,tag2,tag1 |
---------------------------------
我想展示产品包含tag3
。如何在php中查询数据库?
提前致谢。
我已将表格设计改为此。
__________________________
| tag_id | tag_name |
|--------------|-----------|
| 1 | tag1 |
| 2 | tag2 |
| 3 | tag3 |
| 4 | tag4 |
--------------------------
__________________________
| product_id | tag_id |
|--------------|-----------|
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 3 |
| 5 | 4 |
| 6 | 3 |
--------------------------
我认为这个比第一个更好。是吗?
答案 0 :(得分:3)
select * from your_table
where find_in_set('tag3', tag_name) > 0
答案 1 :(得分:1)
一个简单但非常模糊的解决方案是:
SELECT * FROM products WHERE tag_name LIKE '%tag3%'
但是,你的表设计错了,你应该有另一个这样的表: product_id tag_name 1个标签1 1个标签2 2 tag1
答案 2 :(得分:1)
您可以使用比使用的@amik更严格的FIND_IN_SET()。
SELECT * FROM `products` WHERE FIND_IN_SET('tag3', tag_name)