gpt4 book ai didi

mysql order by 标 checkout 现分组依据

转载 作者:行者123 更新时间:2023-11-29 23:38:44 27 4
gpt4 key购买 nike

我不确定这个问题是否已在本网站的其他地方得到解答,但我很难用语言解释我的问题。这里是:我想做的是按用户选择的标签对crawler_results 中的文章进行排序。因此,文章中出现的标签越多(count_tags 越大),它在层次结构中的位置就越高。

我有4个表:crawler_results(我存储文章的位置)、tags(我存储标签名称的位置)、article_tags(我存储tag_id和标 checkout 现次数的位置)和user_tags(我存储user_id和tag_id的位置) .

我尝试过:

      SELECT cr.id, title, count_tags, t.tag
FROM crawler_results cr
INNER JOIN article_tags at
ON cr.id = at.article_id
INNER JOIN tags t
ON t.id = at.tag_id
INNER JOIN user_tags ut
ON ut.tag_id = at.tag_id
AND user_id = '$user_id'
ORDER BY count_tags DESC

此查询显示按 count_tags 排序的文章,但不幸的是,它对文章包含的所有标签都这样做。例如,如果一篇文章是这样的:“Stackoverflow 溢出太棒了!”并且用户选择了“stack”和“overflow”作为标签,“overflow”应该是查询查看的唯一标签,因为它比“stack”出现得更多。

我有一种感觉,它与 GROUP BY 有关 - 我是对的吗?我只是不知道它是如何工作的。

提前致谢!如果您需要更多信息,请告诉我。

编辑:这是我的表格:

爬行器结果:

       | id         | title       | content      |
|:-----------|------------:|:------------:|
| 1 | Some title | Some content |
| 2 | Other title | Other content|

标签:

       | id         | tag         | 
|:-----------|------------:|
| 1 | Some tag |
| 2 | Other tag |

文章标签:

       | id         | tag_id      | article_id   | count_tags   |
|:-----------|------------:|:------------:|:------------:|
| 1 | 1 | 1 | 5 |
| 2 | 2 | 2 | 10 |
| 3 | 1 | 2 | 8 |

用户标签:

       | id         | user_id     | tag_id       |
|:-----------|------------:|:------------:|
| 1 | 1 | 1 |
| 2 | 1 | 2 |

最佳答案

这是似乎返回预期结果的查询:

SELECT cr.id
, cr.title
, SUM(CASE
WHEN ut.tag_id IS NOT NULL THEN at.count_tags
ELSE 0
END) AS matching_tags
FROM crawler_results cr
INNER JOIN article_tags at ON cr.id = at.article_id
LEFT JOIN user_tags ut ON ut.tag_id = at.tag_id
AND user_id = '$user_id'
GROUP BY cr.id, cr.title
ORDER BY matching_tags DESC

我刚刚添加了一个 GROUP BY 子句,以便计算每篇文章的标签数量,然后对结果进行降序排序。

希望这会有所帮助。

关于mysql order by 标 checkout 现分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287333/

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