gpt4 book ai didi

mysql - 生成 SQL 查询以获取相关结果

转载 作者:行者123 更新时间:2023-11-29 14:53:55 24 4
gpt4 key购买 nike

我有一个主题画廊系统。我需要在主题预览页面内实现“相关主题”项目。

每个主题都有颜色和标签,所以我有 5 个表格:

  • 主题

    • id_主题
    • 标题
  • 颜色

    • id_颜色
    • 标题(红色)
  • 标签

    • id_标签
    • 标题(行星)
  • 主题颜色

    • id_主题
    • id_颜色
  • 主题标签

    • id_主题
    • id_标签

问题是我只需要收到 5 个结果,并且它们必须显示颜色和标签之间有更多匹配的结果。有了这个要求,我不知道从哪里开始。有什么想法吗?

最佳答案

如果您想要与给定主题具有最多共同点的五个主题,您可以尝试以下操作:

DECLARE @target_id_theme INT;
SET @target_id_theme = 1; -- this is the id_theme you want to find similar themes for

SELECT t.id_theme, COUNT(*) as matching_things
FROM theme AS t
LEFT OUTER JOIN theme_color AS tc ON tc.id_theme = t.id_theme
LEFT OUTER JOIN theme_tag AS tt ON tt.id_theme = t.id_theme
WHERE tc.id_color IN (SELECT id_color FROM theme_color WHERE id_theme = @target_id_theme)
OR tt.id_tag IN (SELECT id_tag FROM theme_tag WHERE id_theme = @target_id_theme)
GROUP BY t.id_theme
ORDER BY COUNT(*) DESC
LIMIT 5

未经测试,买家请注意,但我希望您能明白。这将为与分配给 @target_id_theme 的颜色或标签匹配的每个颜色或标签创建一行,按计数降序对它们进行排序,并给出前 5 个。

关于mysql - 生成 SQL 查询以获取相关结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5106010/

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