gpt4 book ai didi

MYSQL将id与列关键字匹配并显示结果

转载 作者:行者123 更新时间:2023-11-30 01:37:26 34 4
gpt4 key购买 nike

我有一个包含数百个蛋糕的数据库,每个蛋糕都有不同的关键字。在这个例子中,我想要实现的是首先匹配至少有 2 个相似关键字的蛋糕——在这个例子中,它将是蛋糕 1 和 4。(不知道如何在这里做一个表,但我列出了 ids 1- 4,然后是一个名为“成分”的列,其中显示每个 ID 的三种成分。)然后我想显示它们。听起来很容易,但到目前为止我还没有成功。如有任何帮助,我们将不胜感激。

餐 table 名称:甜点

id成分
1--软糖,焦糖,椰子--2. Vanilla 、榛子、椰子——3. Vanilla 、巧克力、软糖——4.软糖、焦糖、 Vanilla --

基本上,我想展示所有具有两种或多种相同成分的蛋糕。不知道如何进行查询。

最佳答案

这是一个非常糟糕的数据库设计,正确的答案是改变它。理想情况下,您应该为蛋糕和配料设置单独的表,然后使用第三个表将蛋糕 ID 与配料 ID 相关联。

但是假设蛋糕总是含有三种成分,你可以这样做,尽管你绝对不应该这样做:

SELECT DISTINCT id
FROM (SELECT id, SUBSTRING_INDEX(ingredients,',',1) AS ingredient FROM cakes
UNION
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(ingredients,',',-2),',',1) AS ingredient FROM cakes
UNION
SELECT id, SUBSTRING_INDEX(ingredients,',',-1) AS ingredient FROM cakes) AS i
GROUP BY ingredient
HAVING count(*) >= 2

它使用子选择来创建三个成分表,每个表对应一个逗号分隔的位置,它们组合为一个 UNION。一旦您掌握了这些信息,就只需按成分对蛋糕进行分组,并过滤​​掉那些未使用多次的成分(HAVING 子句)。这将为您留下包含非独特成分的蛋糕 ID 列表。

这是一个可怕的解决方案,如果您的蛋糕含有四种或更多成分,则该解决方案将不起作用,尽管您可以添加更多 UNION 语句来考虑更多可能的成分(如果无法更改)数据库设计。

关于MYSQL将id与列关键字匹配并显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16674916/

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