gpt4 book ai didi

mysql - MySQL 中的匹配集

转载 作者:行者123 更新时间:2023-11-29 00:46:09 25 4
gpt4 key购买 nike

我正在运行类似于以下的查询:

`SELECT * FROM `table` WHERE FIND_IN_SET('1',`tags`) OR FIND_IN_SET('2',`tags`)...

是否有更简单的方法来运行查询以说明一组中的任何数字是否与另一组中的任何数字匹配?

例如,我想做这样的事情:

`SELECT * FROM `table` WHERE MATCH_ANY_IN_SET('1,2,7,34,45',`tags`)

最佳答案

在字符串字段中有一个分隔的“标签”列表并不是像 MySQL 这样的关系数据库管理系统的一个很好的用途。

创建一个单独的表会更明智,我们称它为 ThingTags,它将现有表中的事物与其标签相关联:

CREATE TABLE ThingTags (
ThingID INT NOT NULL,
TagID INT NOT NULL,
FOREIGN KEY (ThingID) REFERENCES `table` (ID)
);

FOREIGN KEY 约束告诉 MySQL 记录只能存在于 ThingTags 中,前提是 table 中有相应的条目(其中 ThingTags.ThingID = table.ID).

因此,对于每个“事物”,此表中将有多个记录:

INSERT INTO ThingTags VALUES (1,1), (1,7), (1,45), (2,1), (2,34);

您的查询将如下所示:

SELECT `table`.*
FROM `table` JOIN `ThingTags` ON `ThingTags`.`ThingID` = `table`.`ID`
WHERE `ThingTags`.`TagID` IN (1,2,7,34,45);

关于mysql - MySQL 中的匹配集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457660/

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