的同时无选择行数以及其他数据所以我有一个MySQL
查询是根据传递给我的php脚本的参数动态创建的。这是伟大的工作,但是,我想能够获取它的行数将返回before applying the LIMIT statement
。在我看来,这似乎无法在一个查询中完成,但有太多关于MySQL
我不知道,如果可以的话,我丝毫不会感到惊讶。MySQL - 在考虑LIMIT
我环顾四周,并发现COUNT(*)
比mysql_num_rows()
快得多,但据我所知,我也不能在我的情况下使用,因为他们仅仅是被限制我有多少导致了我的LIMIT
规定,通常是30.此外,我宁愿不提交不包含LIMIT
的查询,只是为了获得将返回的数字或行,然后立即应用LIMIT
并提交相同的查询。
下面是一个简单的查询:
SELECT DISTINCT w.id, w.resolution, w.views, w.colors, w.favorites
FROM wallpapers AS w
LEFT JOIN (tagmap AS tm, tags AS t)
ON (
w.id = tm.wallpaper_id
AND
tm.tag_id = t.tag_id
) WHERE w.ratio =
(SELECT ratio FROM wallpapers WHERE resolution = '1920 x 1080' LIMIT 1)
AND (
t.tag
IN (
'portal'
)
)
AND (w.verify = 2)
ORDER BY w.id DESC LIMIT 30
我已经清理,最多花了很多时间优化它,所以希望它很容易让你阅读,但也随时到别的提什么你发现时髦的代码,可以帮助加速这一过程^^
回到问题,一个办法,我看这样做会坚持的条件句(一切,但SELECT
,JOIN
,GROUP BY
,和LIMIT
基本上)从查询到SELECT COUNT(*)
语句,运行该语句,然后r取消所有数据的实际查询。这是最有效的方式,还是有人有更好的主意?我很想听听所有可能的解决方案,谢谢! :)
'SELECT语句可能包含一个LIMIT子句来限制服务器返回给客户端的行数。在某些情况下,最好知道该语句在没有LIMIT的情况下会返回多少行,但不需要再次运行语句,我认为您碰到了头部。谢谢你,先生! –
我是否用'SQL_CALC_FOUND_ROWS *'替换了我正在使用的'SELECT''?这给了我加入的所有表的所有数据,我宁愿不这样做,那么我该如何指定要返回的数据?另外,我在phpMyAdmin中运行这个,当我添加'SELECT FOUND_ROWS();'它已经列出,但只是说'你的SQL查询已成功执行',没有任何返回。你知道我做错了什么吗? –
无视我的问题,我修好了,再次感谢 –