MySQL Limit返回行并计算非限制行数

时间:2014-12-29 21:22:41

标签: mysql count limit

这是我目前的询问:

SELECT `id`, `type`, `data`, `data_zbid`, `time`
FROM `notifications`
WHERE `cid`='$cid' AND `zbid`='$zbid' AND `read`='$read'
ORDER BY `time` DESC
LIMIT $start, $amount

如您所见,我将返回的结果数量限制为$amount,这是一个正整数。但我还想知道表中有多少通知,或者如果我没有使用limit,将会返回多少结果。有没有办法在同一个查询中执行此操作?

2 个答案:

答案 0 :(得分:0)

您可以在此处撰写以下查询

SELECT COUNT(*)AS total,idtypedatadata_zbidtime 来自notifications WHERE cid ='$ cid'和zbid ='$ zbid'和read ='$ read' ORDER BY time DESC LIMIT $ start,$ amount

它将返回表中的总条目数与总属性

答案 1 :(得分:0)

修改您的查询:

SELECT SQL_CALC_FOUND_ROWS `id`, ... LIMIT ...

然后:

SELECT FOUND_ROWS();

http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_found-rows

FOUND_ROWS()函数返回上一个查询在没有LIMIT的情况下返回的行数。

在单个结果集中无法执行此操作,因为结果集中的每一行必须具有所有相同的列。它可以通过存储过程来完成,因为它们可以从单个请求返回多个不同的结果集,但是如上所示执行第二个查询的时间应该可以忽略不计。