gpt4 book ai didi

mysql - 从每个用户的表中获取最后 5 行

转载 作者:行者123 更新时间:2023-11-29 07:32:17 24 4
gpt4 key购买 nike

<分区>

我需要你帮助解决这个问题。

场景:

用户可以为任意数量的歌曲投票,但我只想选择每位用户最后 5 票。我不想选择最后 5 票。

表结构:

klick here

示例:

3 个用户

  • Karl,投了 10 首歌曲
  • 罗伯特,投了 6 首歌曲
  • Joanne,投了 3 首歌曲

我想获得 Karls 最后 5 票、Roberts 最后 5 票和 Joannes 最后 3 票。

当前 SQL 查询:

SELECT songs.genre, songs.title, songs.band, COUNT(*) AS anzahlVotes, users.name
FROM T_Songs AS songs
RIGHT JOIN T_Votes AS votes ON songs.P_Song_id = votes.F_Song_id
LEFT JOIN T_Users AS users ON votes.F_User_id = users.P_User_id
WHERE votes.P_Vote_id IN (
SELECT P_Vote_id
FROM T_Votes
GROUP BY F_User_id
HAVING P_Vote_id > MAX(P_Vote_id)-5

);

但是这个查询没有返回正确的投票数。

解决方案(感谢 Gordon Linoff 和 Paul Spiegel):

SELECT songs.genre, songs.title, songs.band, COUNT(*) AS anzahlVotes, users.name
FROM T_Songs AS songs
RIGHT JOIN T_Votes AS votes ON songs.P_Song_id = votes.F_Song_id
LEFT JOIN T_Users AS users ON votes.F_User_id = users.P_User_id
WHERE users.nobility_house IS NOT NULL
AND votes.P_Vote_id >= coalesce(
(select votes2.P_Vote_id
from T_Votes votes2
where votes2.F_User_id = votes.F_User_id
order by votes2.P_Vote_id desc
limit 1 offset 4
), 0)
GROUP BY votes.F_User_id

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