gpt4 book ai didi

mysql - 使用嵌套查询在 MySQL 中创建排行榜(成员排名列表)

转载 作者:行者123 更新时间:2023-11-29 00:47:50 26 4
gpt4 key购买 nike

我正在尝试使用下面的两个嵌套查询在我的网站上创建成员(member)排行榜。

第一个查询获取成员列表:

SELECT member_id, username, screen_name FROM exp_members WHERE group_id IN (1,5) LIMIT 100

第二个查询嵌套在第一个查询中,获取成员条目被收藏的次数:

SELECT COUNT(*) AS favorite_count
FROM qb_channel_titles, qb_channel_data, qb_matrix_data
WHERE qb_channel_titles.channel_id = '1'
AND qb_channel_titles.entry_id = qb_channel_data.entry_id
AND qb_channel_titles.entry_id = qb_matrix_data.entry_id
AND field_id = '13'
AND author_id = 'MEMBER_ID_FROM_FIRST_QUERY'
ORDER BY favorite_count DESC"
}

所以我的代码是这样的:

[first query]
[second query]
..output one row of the leaderboard..
[/second query]
[/first query]

将第二个查询嵌套在第一个查询中可以得到正确的成员列表和他们每个人收到的选票数量,但列表是根据第一个(外部)查询而不是第二个(内部)查询排序的。

两个问题:

  1. 如何按 favorite_count 降序排列成员列表?
  2. 执行此操作最节省资源的方法是什么?我怀疑嵌套查询不是最好的方法,但老实说我不知道​​有什么更好的办法。

最佳答案

你想做这样的事情吗?

SELECT
member_id,
username,
screen_name,
(SELECT COUNT(*) AS favorite_count
FROM qb_channel_titles, qb_channel_data, qb_matrix_data
WHERE qb_channel_titles.channel_id = '1'
AND qb_channel_titles.entry_id = qb_channel_data.entry_id
AND qb_channel_titles.entry_id = qb_matrix_data.entry_id
AND field_id = '13'
AND author_id = member_id
ORDER BY favorite_count DESC") as "Votes"
FROM
exp_members
WHERE
group_id IN (1,5)
ORDER BY
(SELECT COUNT(*) AS favorite_count
FROM qb_channel_titles, qb_channel_data, qb_matrix_data
WHERE qb_channel_titles.channel_id = '1'
AND qb_channel_titles.entry_id = qb_channel_data.entry_id
AND qb_channel_titles.entry_id = qb_matrix_data.entry_id
AND field_id = '13'
AND author_id = member_id
ORDER BY favorite_count DESC")
LIMIT 100

您还可以将此查询放在一个 View 中并查询该 View (某种程度上嵌套另一个查询以提高性能)。我不是性能方面的专家,但我会说你可以使用触发器并将 favorite_count 保存在另一个表中,并且每次用户喜欢某些东西时触发器都会更新。另一个表可能只有 ID|COUNT。这会增加收藏的时间,但会减少查看排行榜的时间,因此效率将取决于您收藏或查看排行榜的用户配置文件...

关于mysql - 使用嵌套查询在 MySQL 中创建排行榜(成员排名列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9849805/

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