gpt4 book ai didi

mysql - 逗号分隔搜索

转载 作者:行者123 更新时间:2023-11-29 10:33:37 25 4
gpt4 key购买 nike

我想获取interests=IN6330,IN8408的记录。 URL 为 example.com?interests=IN6330,IN8408。 尝试使用以下查询,但一次仅使用一个参数。逗号分隔值可以是单个或多个。

SELECT * FROM `interests` WHERE FIND_IN_SET('IN8408',interests)

enter image description here

最佳答案

叹息。这就是人们提示正常化的原因。 SQL 被悲观化(与优化相反)以搜索逗号分隔值字符串中的匹配项。

成功的最佳途径:通过为兴趣创建一个新表来标准化您的数据库,该表可以包含多个项目,每个项目在其自己的行中。用实体关系术语来说,您需要一个与其父item 具有多对一关系的interest 实体。然后是表单的查询

 SELECT item.something, item.another, interests.interest
FROM item
JOIN interests on item.interest_id = interests.interest_id
WHERE interests.interest IN ('IN6330','IN8408')

会工作,而且工作效率很高。

如果您必须将这些逗号分隔的值保留在表中,您将需要一种更加费力且冗长的方法来执行类似于IN的搜索。

这样的事情可能适合你。

 SELECT * FROM interests WHERE FIND_IN_SET('IN6330',interests)
UNION
SELECT * FROM interests WHERE FIND_IN_SET('IN8408',interests)

但正如你所看到的,这很令人讨厌:太讨厌了,在你之后开发你的软件的人会咒骂你的名字。

正常化!

关于mysql - 逗号分隔搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46909699/

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