在 sql 子句中应用 LIMIT 之前,我试图找出计算记录总数(对于分页选择器)的最佳方法,让自己陷入了一些混乱。
我一直在使用 2 个查询来实现这一点,为我想要的特定视图改变 WHERE 子句。
$sqlcount = "SELECT COUNT(invnum) AS num
FROM tblinvoices
WHERE invcustid>0 AND invstat>0 AND invdate
BETWEEN '$startdate' AND '$enddate'
$sqlquery = "SELECT $fieldlist
FROM tblinvoices
INNER JOIN tblcontacts
ON tblinvoices.invcustid = tblcontacts.ID
WHERE invcustid>0 AND invstat>0 AND invdate
BETWEEN '$startdate' AND '$enddate'
ORDER BY invdate
LIMIT 0,$pagerows";
我的问题是,我看到的 DATE 和 COUNT 查询以及 PAGING 的每个示例在方法上都有很大差异,我很想知道以灵活有效的方式结合这些要求的最佳方法。
我最初选择 BETWEEN 方法是为了灵活性,但许多示例(针对日期范围)使用子句,例如 -
SELECT MIN(date) AS date1, MAX(date) AS date2 FROM mytable
WHERE (MONTH(date) = (SELECT Month(MAX(date))-1 FROM mytable )
OR MONTH(date) = (SELECT Month(MAX(date))-2 FROM mytable ))
AND YEAR(date) = (SELECT YEAR(MAX(date))
FROM mytable)
我无法将这种语句与 COUNT 和 LIMIT 结合起来用于分页目的,并且不知道是否可以在一个操作中同时执行这两种操作(我已经“假定”这是不可能的,因为 LIMIT 会影响 COUNT)
任何关于满足这一共同要求的最佳方式(我认为是)的建议或示例将不胜感激。提前谢谢了。