2011-10-10 55 views
3
SELECT `p`.`name`, `f`.* 
     FROM `players` `p`, `folks` `f` 
     WHERE `p`.`id` = `f`.`guid` 
     AND `f`.`deleted` = 0 
     AND `first` = {$id} 
     AND `text` LIKE ? 
     LIMIT 10 

正如您所见,我在此处使用的是LIMIT条件。我需要统计所有不会有LIMIT条件的匹配结果。在查询中获得LIMIT中所有结果的计数

我试过使用:FOUND_ROWS();但我使用它有问题,因为它不会在任何地方返回“全部”结果。

+0

不是真的:http://stackoverflow.com/questions/2439829/how-to-count-all-rows-when-using-select-with-limit-in-mysql-query – Isarius

回答

3

以下应该做的事情:) 重要的是SQL_CALC_FOUND_ROWS,否则FOUND_ROWS()将不起作用!

SELECT SQL_CALC_FOUND_ROWS `p`.`name`, `f`.* 
    FROM `players` `p`, `folks` `f` 
    WHERE `p`.`id` = `f`.`guid` 
    AND `f`.`deleted` = 0 
    AND `first` = {$id} 
    AND `text` LIKE ? 
    LIMIT 10 


SELECT FOUND_ROWS(); 
+0

哦,我现在已经在分离的查询变量中创建了'SELECT FOUND_ROWS();'它工作。谢谢你,小伙伴 :)。 – Isarius