获取复杂查询的计数

时间:2012-04-08 02:52:41

标签: mysql select join count having

我想计算以下查询返回的总行数:

SELECT table1.*, COUNT(table2.fk) * (100/18) AS 'number' 
FROM table1 INNER JOIN table2 ON table1.pk = table2.fk
WHERE table1.Street LIKE '$Street%' 
AND table1.City LIKE '$City%' 
AND table1.Zip LIKE '%$Zip' 
AND table1.DOBY LIKE '%$DOBY' 
AND table1.DOBM LIKE '%$DOBM' 
AND table1.DOBD LIKE '%$DOBD' 
AND table1.Gender LIKE '$gender%' 
AND table2.year>= 2004 
AND table2.type IN ('AA', 'AB', 'AC') 
GROUP BY table2.fk
HAVING (COUNT(table2.fk) * (100/18)) >= '$activity' 
ORDER BY DOBY, DOBM, DOBD ASC

查询计算table1的主键作为table2的外键出现的次数,并根据固定的数量计算百分比('number')。它工作得很好,但是我无法获得为我的分页脚本找到的记录总数。 如果有人能提出一些建议或解决方案,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以SQL_CALC_FOUND_ROWS(谷歌的确切语法)
然后使用SELECT FOUND_ROWS() AS total

答案 1 :(得分:0)

与Itay Moav所说的一样,编程语言应该具有found_rows函数的功能。根据{{​​3}},如果SELECT关键字不存在,它会返回带有LIMIT关键字的LIMIT语句的行数。

如果没有,您只需对数据库进行另一次SELECT查询:SELECT FOUND_ROWS();。它将返回相同的信息。