Bay*_*ock 7 mysql union counter request limit
我有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;
Run Code Online (Sandbox Code Playgroud)
我希望$ counter等于10,无论页面如何,但是:
在第1页,$ counter = 10
在第2页,$ counter = 20
在第3页,$ counter = 23
在第4页,$ counter = 3
好的,如果最后一页不一定等于10,因为我从列表中得到了什么,但是第2页和第3页得到20和23对我没有任何意义.
它必须与LIMIT相关,因为如果我只使用经典方式的单个表,我的计数器总是等于10(当然,除非它是最后一页).
这有什么不对?
谢谢!
限制应该具有您想要的开始和行数.所以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
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3069 次 |
最近记录: |