gpt4 book ai didi

mysql - Php/Mysql Union 和 Limit offset

转载 作者:可可西里 更新时间:2023-11-01 06:37:33 26 4
gpt4 key购买 nike

我有 3 个结构完全相同的表,我需要将它们作为一个大表进行查询,将这个大表作为一个整体进行排序和限制。当我使用分页时,限制是一个偏移量。

这是我目前所拥有的:

$from = (($page_number-1)*10);
$to = ($page_number)*10;

$request = mysql_query("
(SELECT * FROM table_a)
UNION ALL
(SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_c)
ORDER BY title ASC
LIMIT ".$from.",".$to
);

$z=0;

while ($result = mysql_fetch_array($request))
{
....
$z++;
};

$counter = $z;

我希望 $counter 等于 10,无论页面是什么但是:

在第 1 页上,$counter = 10

在第 2 页,$counter = 20

在第 3 页,$counter = 23

在第 4 页,$counter = 3

好吧,如果最后一页不一定等于 10,因为我得到了列表中剩下的内容,但是第 2 页和第 3 页得到 20 和 23 对我来说没有任何意义。

它必须与 LIMIT 相关,因为如果我仅以经典方式使用单个表,我的计数器将始终等于 10(当然,除非它是最后一页)。

这里有什么问题吗?

谢谢!

最佳答案

Limit 应该有开始和你想要的行数。所以 0, 10 如果你想要前十个,然后 10, 10 如果你想要下一个 10(不是 10, 20从第 10 行开始给你 20 行)。

如果您仍然遇到问题,请尝试将选择项和并集放在它们自己的 () 集合中。我不确定操作顺序,您的限制可能只适用于最后一张表。

$request = mysql_query("
(
(SELECT * FROM table_a)
UNION ALL
(SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_c)
)
ORDER BY title ASC
LIMIT ".$from.",10
);

关于mysql - Php/Mysql Union 和 Limit offset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565898/

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