gpt4 book ai didi

mysql - 根据记录数和条件查找第一个可用选项的函数

转载 作者:行者123 更新时间:2023-11-29 07:45:26 27 4
gpt4 key购买 nike

我需要编写一条 SQL 语句来为我的团队获取第一个“免费”poule(团队池/集合)。让我们解释一下。我有两张 table ,一张 table 有 4 个球,每个球的 TEAMQTY 为 4(一个球中允许的最大团队数):

ID  TOURNID     NAME       TEAMQTY
1 1 Poule 1 4
2 1 Poule 2 4
3 1 Poule 3 4
4 1 Poule 4 4

和一个表组

ID  TOURNID     NAME    POULEID
1 1 Team 1 1
2 1 Team 2 1
3 1 Team 3 1
4 1 Team 4 1

我想在mysql中编写一个函数,根据上述情况建议pouleid为2,因为poule 1完全被团队填满。 IOW 我应该能够在 PouleId 2 中再插入 4 个团队,之后我的函数应该返回 PouleID 3 作为建议。

我是 mysql 新手(一个 sql 菜鸟),我已经尝试过了:

SELECT id FROM POULES WHERE TOURNID = 1 AND 
teamqty > (SELECT COUNT(ID) FROM TEAMS WHERE TOURNID = 1) LIMIT 1

不用说我的实验sql代码是没用的..我这里需要 while 循环还是需要 SQL 语句?

这是我的支持代码:

CREATE TABLE IF NOT EXISTS `poules` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`TOURNID` int(11) NOT NULL,
`NAME` varchar(20) NOT NULL,
`TEAMQTY` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `TOURNID` (`TOURNID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;


INSERT INTO `poules` (`ID`, `TOURNID`, `NAME`, `TEAMQTY`) VALUES
(1, 1, '1', 4),
(2, 1, '2', 4),
(3, 1, '3', 4),
(4, 1, '4', 4);


CREATE TABLE IF NOT EXISTS `teams` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`TOURNID` int(11) NOT NULL,
`NAME` varchar(50) NOT NULL,
`POULEID` int(11) DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `NAME` (`NAME`),
KEY `TOURNID` (`TOURNID`))
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;



INSERT INTO `teams` (`ID`, `TOURNID`, `NAME`, `POULEID`) VALUES
(1, 1, '1', 1),
(2, 1, '2', 1),
(3, 1, '3', 1),
(4, 1, '4', 1);

TIA 迈克

最佳答案

您可以使用子查询进行左连接,该子查询获取团队总数并与主表中的团队计数进行比较

您可以使用 limit 来根据团队计数的顺序获取一个结果。

select p.id as pouleid, ifnull(t.teamcount,0), p.tournid
from poules p
left join ( select count(pouleid) as teamcount, pouleid, tournid
from teams
group by pouleid, tournid
)t
on p.id = t.pouleid
and p.tournid = t.tournid
where ifnull(t.teamcount,0) < p.teamqty

关于mysql - 根据记录数和条件查找第一个可用选项的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27931804/

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