MySQL-同时选择行和其他数据,不考虑限制

MySQL-同时选择行和其他数据,不考虑限制,mysql,Mysql,因此,我有一个MySQL查询,它是根据传递给php脚本的参数动态创建的。它工作得很好,但是,我希望能够在应用LIMIT语句之前获取它将返回的行数。在我看来,这似乎不可能在一个查询中完成,但MySQL的内容太多了,我不知道如果可以的话,我一点也不会感到惊讶 我环顾四周,发现COUNT*比mysql_num_行快得多,但据我所知,我不能在我的情况下使用这两个行,因为它们只会受到我在限制中指定的结果数量的限制,通常是30。此外,我不希望提交一个不包含限制的查询,而只是为了获得它将返回的数字或行,然后立

因此,我有一个MySQL查询,它是根据传递给php脚本的参数动态创建的。它工作得很好,但是,我希望能够在应用LIMIT语句之前获取它将返回的行数。在我看来,这似乎不可能在一个查询中完成,但MySQL的内容太多了,我不知道如果可以的话,我一点也不会感到惊讶

我环顾四周,发现COUNT*比mysql_num_行快得多,但据我所知,我不能在我的情况下使用这两个行,因为它们只会受到我在限制中指定的结果数量的限制,通常是30。此外,我不希望提交一个不包含限制的查询,而只是为了获得它将返回的数字或行,然后立即应用限制并提交相同的查询

以下是一个示例查询:

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*语句上,运行该语句,然后运行实际查询以获取所有数据。这是最有效的方法还是有人有更好的主意?我很想听到所有可能的解决方案,谢谢!:

我想你要找的是


不过仍然有两个查询。

SELECT语句可能包含一个LIMIT子句,用于限制服务器返回给客户端的行数。在某些情况下,最好知道该语句在没有限制的情况下返回了多少行,但如果不再次运行该语句,我认为这是一针见血。谢谢你,好先生!我是否用SQL\u CALC\u FOUND\u ROWS*替换当前选择的所有内容?这将为我提供所有要加入的表中的所有数据,我不希望这样做,我该如何处理这些数据并指定要返回的数据?另外,我在phpMyAdmin中运行这个,当我添加SELECT find_行时;它列出了它,但只是说您的SQL查询已成功执行,没有返回任何内容。你知道我做错了什么吗?
SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
WHERE id > 100 LIMIT 10;

SELECT FOUND_ROWS();