这是我目前的询问:
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
,将会返回多少结果。有没有办法在同一个查询中执行此操作?
答案 0 :(得分:0)
您可以在此处撰写以下查询
SELECT COUNT(*)AS total,id
,type
,data
,data_zbid
,time
来自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
的情况下返回的行数。
在单个结果集中无法执行此操作,因为结果集中的每一行必须具有所有相同的列。它可以通过存储过程来完成,因为它们可以从单个请求返回多个不同的结果集,但是如上所示执行第二个查询的时间应该可以忽略不计。