gpt4 book ai didi

mysql - 在 mysql 表中搜索标签的更好方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:36 26 4
gpt4 key购买 nike

假设我有一个表格,其中一列的标题标签包含以逗号分隔的数据。

"tag1,tag2,new york,tag4"

如您所见,一些标签会有空格。

在表中查询等于“纽约”的任何标签的最佳或最准确的方法是什么?

过去我用过:

SELECT id WHERE find_in_set('new york',tags) <> 0 

但是当值有空格时,find_in_set 不起作用。

我目前正在使用这个:

SELECT id WHERE concat(',',tags,',') LIKE concat(',%new york%,') 

但我不确定这是否是最好的方法。

你会怎么做?

最佳答案

当项目 A 可以与多个项目 B 相关联时,项目 B 可以与多个项目 A 相关联。这称为 Many to many relationship

具有这些关系的数据应存储在单独的表中,并且仅在查询时连接在一起。

例子

表一

| product_uid | price | amount |
| 1 | 12000 | 3000 |
| 2 | 30000 | 600 |

表2

| tag_uid | tag_value |
| 1 | tag_01 |
| 2 | tag_02 |
| 3 | tag_03 |
| 4 | tag_04 |

然后我们使用一个连接表来关联它们

表3

| entry_uid | product_uid | tag_uid |
| 1 | 1 | 3 |
| 2 | 1 | 4 |
| 3 | 2 | 1 |
| 4 | 2 | 2 |
| 5 | 4 | 2 |

查询将是(如果你想选择第一项和标签)

SELECT t1.*, t2.tag_value 
FROM Table1 as t1,
JOIN Table3 as join_table ON t1.product_uid = join_table.product_uid
JOIN Table2 as t2 ON t2.tag_uid = join_table.tag_uid
WHERE t1.product_uid = 1

关于mysql - 在 mysql 表中搜索标签的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com