我一共有6排。当我执行一个查询(例如SELECT * from表)时,我有
retrieved
知道是什么原因导致了这种奇怪的行为吗?
SQL查询
SELECT `places`.*, `category`.*, COUNT(places_reviews.place_id) AS num_reviews, (places_popularity.rating_1 + 2*places_popularity.rating_2 + 3*places_popularity.rating_3 + 4*places_popularity.rating_4 + 5*places_popularity.rating_5)/(places_popularity.rating_1 + places_popularity.rating_2 + places_popularity.rating_3 + places_popularity.rating_4 + places_popularity.rating_5) AS average_rating, FOUND_ROWS() AS num_rows FROM (`places`) JOIN `category` ON `places`.`category_id` = `category`.`category_id` LEFT JOIN `places_reviews` ON `places_reviews`.`place_id` = `places`.`id` LEFT JOIN `places_popularity` ON `places_popularity`.`place_id` = `places`.`id` WHERE `places`.`category_id` = 1 AND `places`.`name` LIKE '%%' GROUP BY `places`.`id` ORDER BY `id` desc LIMIT 3或块中的:
SELECT `places`.*, `category`.*,
COUNT(places_reviews.place_id) AS num_reviews,
(places_popularity.rating_1 + 2*places_popularity.rating_2 + 3*places_popularity.rating_3 + 4*places_popularity.rating_4 + 5*places_popularity.rating_5)/(places_popularity.rating_1 + places_popularity.rating_2 + places_popularity.rating_3 + places_popularity.rating_4 + places_popularity.rating_5) AS average_rating, FOUND_ROWS() AS num_rows FROM (`places`)
JOIN `category` ON `places`.`category_id` = `category`.`category_id`
LEFT JOIN `places_reviews` ON `places_reviews`.`place_id` = `places`.`id`
LEFT JOIN `places_popularity` ON `places_popularity`.`place_id` = `places`.`id`
WHERE `places`.`category_id` = 1
AND `places`.`name` LIKE '%%'
GROUP BY `places`.`id`
ORDER BY `id` desc LIMIT 3发布于 2011-05-10 19:41:52
编辑:
这就是你要找的东西:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
所以在您的查询中:
选择sql_calc_found_rows .
发布于 2011-05-10 19:50:41
试着这样做
SELECT sql_calc_found_rows `places`.*, `category`.*,
COUNT(places_reviews.place_id) AS num_reviews,
(places_popularity.rating_1 + 2*places_popularity.rating_2 + 3*places_popularity.rating_3 + 4*places_popularity.rating_4 + 5*places_popularity.rating_5)/(places_popularity.rating_1 + places_popularity.rating_2 + places_popularity.rating_3 + places_popularity.rating_4 + places_popularity.rating_5) AS average_rating FROM (`places`)
JOIN `category` ON `places`.`category_id` = `category`.`category_id`
LEFT JOIN `places_reviews` ON `places_reviews`.`place_id` = `places`.`id`
LEFT JOIN `places_popularity` ON `places_popularity`.`place_id` = `places`.`id`
WHERE `places`.`category_id` = 1
AND `places`.`name` LIKE '%%'
GROUP BY `places`.`id`
ORDER BY `id` desc LIMIT 3;
select found_rows();发布于 2015-05-19 10:54:07
最快的解决方案是按以下方式对实际查询进行子查询:
SELECT SQL_CALC_FOUND_ROWS * FROM (SELECT whatever FROM whatever WHERE whatever LIMIT whatever) ax;
select FOUND_ROWS();现在你将得到正确的结果。主要原因是SQL_CALC_FOUND_ROWS主要跟踪已找到的行(即没有LIMITS),没有返回行。
https://stackoverflow.com/questions/5955471
复制相似问题