gpt4 book ai didi

mysql - 如何将数据库中的条目均分为 5 个?

转载 作者:行者123 更新时间:2023-11-29 12:57:38 24 4
gpt4 key购买 nike

我有一个名为“商店”的表,我想将此商店条目分为 5 个。我的表中有 80k 个条目,我希望用户 A 可以访问 16k 个第一个商店,用户 B 可以访问接下来的 16k 个商店,等等等等。我知道我可以使用 limit,但是 Shop 的主键/id 不是连续的。

目前我的查询如下所示:

if (in_array("ADMIN1", $userRoles)) {
$lowerLimit = 0;
$upperLimit = $numberOfProspectiveShops/5;
} else if (in_array("ADMIN2", $userRoles)) {
$lowerLimit = $numberOfProspectiveShops/5;
$upperLimit = ($numberOfProspectiveShops/5) * 2;
} else if (in_array("ADMIN3", $userRoles)) {
$lowerLimit = ($numberOfProspectiveShops/5) * 2;
$upperLimit = ($numberOfProspectiveShops/5) * 3;
} else if (in_array("ADMIN4", $userRoles)) {
$lowerLimit = ($numberOfProspectiveShops/5) * 3;
$upperLimit = ($numberOfProspectiveShops/5) * 4;
} else if (in_array("ADMIN5", $userRoles)) {
$lowerLimit = ($numberOfProspectiveShops/5) * 4;
$upperLimit = $numberOfProspectiveShops;
}


$prospectiveShopsQuery = $em->createQueryBuilder()->select('s')
->from("AppMainBundle:ProspectiveShop", 's')
->andWhere('s.id <= :upperLimit')
->setParameter('upperLimit', $upperLimit)
->andWhere('s.id > :lowerLimit')
->setParameter('lowerLimit', $lowerLimit)
->andWhere('s.status IS NULL')
;

最佳答案

您应该使用 mySQL 的“限制”功能,而不是基于 id 的 where 子句。

这可以通过使用 setFirstResult($offset) 和 setMaxResults($limit) 来实现。对于前 5000 个,偏移量应等于 0,限制为 5000,对于下一个 5000,偏移量=5000,限制为 5000

您的查询构建器应如下所示:

$prospectiveShopsQuery = $em->createQueryBuilder()->select('s')
->from("AppMainBundle:ProspectiveShop", 's')
->andWhere('s.status IS NULL')
->setFirstResult($offset)
->setMaxResults($limit)
;

关于mysql - 如何将数据库中的条目均分为 5 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23801079/

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