gpt4 book ai didi

php - MySQL 查询列出在单个查询中按最高值和最低值排序的记录

转载 作者:行者123 更新时间:2023-12-02 01:48:33 28 4
gpt4 key购买 nike

我有一张相互比赛的参赛球队表,该表包含球队之前的总得分。我想要做的是获取所有球队记录,按最高分、最低分、第二高分、第二低分等排序。

因为我想将得分最高的团队与得分最低的团队配对。

这是我的数据库架构,

CREATE TABLE participant_teams (
team_id int(11) NOT NULL,
team_name text NOT NULL,
created_by int(11) NOT NULL,
team_profile text NOT NULL,
team_member text NOT NULL,
baller_event_id_fk int(11) NOT NULL,
pay_status text NOT NULL COMMENT 'pending, paid, cancelled',
team_score double NOT NULL,
registered_on timestamp NOT NULL DEFAULT current_timestamp(),
updated_on timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


INSERT INTO participant_teams (team_id, team_name, created_by, team_profile, team_member, baller_event_id_fk, pay_status, team_score, registered_on, updated_on) VALUES
(1, 'Summer Havoc', 2, 'uploads/54988c5c833638d4c19546fbc8de1a35.jpg', '5,2', 1, 'paid', 25, '2022-01-04 13:12:39', '2022-01-04 13:12:39'),
(2, 'Jammers Classic', 4, 'uploads/54988c5c833638d4c19546fbc8de1a35.jpg', '4,3', 1, 'paid', 6.25, '2022-01-04 13:13:17', '2022-01-04 13:13:17'),
(3, 'Brickslayers', 7, 'uploads/54988c5c833638d4c19546fbc8de1a35.jpg', '7,10', 1, 'paid', 12.5, '2022-01-05 07:18:08', '2022-01-05 07:18:08'),
(4, 'Basket Bombers', 9, 'uploads/54988c5c833638d4c19546fbc8de1a35.jpg', '9,8', 1, 'paid', 0, '2022-01-05 07:18:45', '2022-01-05 07:18:45');

现在我刚刚按降序显示了得分的球队,如下所示,

select * from participant_teams order by team_score DESC;

我表中的记录看起来很像这样,

<表类=“s-表”><标题>team_id团队名称团队得分 <正文>1夏日浩劫252Jammers 经典6.253搬砖工12.54篮子轰炸机0

所需的输出是,

<表类=“s-表”><标题>team_id团队名称团队得分 <正文>1夏日浩劫254篮子轰炸机03搬砖工12.52Jammers 经典6.25

如果可能的话,请帮我解决这个问题。

注意:我正在研究 Mysql 和 PHP,因此 PHP 中的任何解决方案也可能有效

谢谢。

最佳答案

如果您的MySQL版本支持ROW_NUMBER窗口函数,您可以尝试使用ROW_NUMBER做一个简单的公式来使组order by number 然后使用 abs 函数获取绝对值

SELECT team_id,team_name,team_score
FROM (
SELECT team_id,team_name,team_score,
abs(ROW_NUMBER() OVER(ORDER BY team_score) -
ROW_NUMBER() OVER(ORDER BY team_score DESC)) rn
FROM participant_teams
) t1
ORDER BY rn desc,team_score desc

https://dbfiddle.uk/?rdbms=mariadb_10.4&fiddle=f638b2aa60649f030982bad575463796

关于php - MySQL 查询列出在单个查询中按最高值和最低值排序的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70603702/

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