gpt4 book ai didi

Mysql:从列表中查找大多数的所有者

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

我正在尝试从列表中找到尽可能多的项目的所有者。

现在看起来像:

SELECT Players.`name` FROM `Items` INNER JOIN `Players` ON Players.`id` = Items.`ownerId`
WHERE Players.`lvl` < Y
GROUP BY `ownerId` HAVING SUM(lookId IN(81411,81421 (lots of it) 81551,81611)) > X

它返回列表中拥有超过 X 个项目的玩家的姓名。

如果它不返回任何行,则意味着我们需要太多的项目,所以我用 X-1 再次尝试。

如果返回 >15 行,我们可以尝试从列表中查找拥有超过 X+1 项的玩家。

起始X是根据列表的大小计算的。

项目大约有 600k 行。

还有其他办法吗?现在需要 >1 秒,因此当启动 X 错误时,整个过程可能需要几秒钟......

编辑:

项目:

CREATE TABLE IF NOT EXISTS `Items` (
`id` int(11) NOT NULL,
`ownerId` int(11) NOT NULL,
`itemType` int(11) NOT NULL,
`itemClass` int(11) NOT NULL,
`itemId` int(11) NOT NULL,
`itemColor` int(11) NOT NULL,
`attrId1` int(11) NOT NULL,
`attrId2` int(11) NOT NULL,
`attrId3` int(11) NOT NULL,
`attr1` int(11) NOT NULL,
`attr2` int(11) NOT NULL,
`attr3` int(11) NOT NULL,
`isArtifact` tinyint(1) NOT NULL,
`armor` int(11) NOT NULL,
`minDmg` int(11) NOT NULL,
`maxDmg` int(11) NOT NULL,
`lookId` mediumint(7) NOT NULL,
PRIMARY KEY (`id`,`ownerId`),
KEY `ownerId` (`ownerId`),
KEY `lookId` (`lookId`)
) ENGINE=InnoDB;

我不明白你所说的示例数据和所需输出是什么意思。查询看起来与此一模一样,只是 IN() 列表有 1 到 3200 个成员。需要输出吗?包含该列表中最多项目的玩家姓名列表

最佳答案

如果问题中没有更多细节(表结构、示例数据、所需输出等),就不可能给出具体答案,但阅读字里行间,我建议将lookId标准添加到where子句中 -

SELECT
`Players`.`name`,
COUNT(`lookId`) AS `num_items`
FROM `Items`
INNER JOIN `Players` ON `Players`.`id` = `Items`.`ownerId`
WHERE `Players`.`lvl` < Y
AND `lookId` IN (81411,81421 (lots of it) 81551,81611)
GROUP BY `ownerId`
ORDER BY `num_items` DESC
LIMIT 15

关于Mysql:从列表中查找大多数的所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14632566/

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