Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php n)这样它就不会失去效率。是的,您可以将内部查询限制为您想要的任何内容。我刚刚意识到mysql\u num\u行不是我想要的。我只选择了5行,但我需要的是行的总数,而不仅仅是我选择的5行。“我想我会用这个,但你还有什么建议吗?”沃克诺,看看我的安塞尔。您可_Php_Mysql_Sql - Fatal编程技术网

Php n)这样它就不会失去效率。是的,您可以将内部查询限制为您想要的任何内容。我刚刚意识到mysql\u num\u行不是我想要的。我只选择了5行,但我需要的是行的总数,而不仅仅是我选择的5行。“我想我会用这个,但你还有什么建议吗?”沃克诺,看看我的安塞尔。您可

Php n)这样它就不会失去效率。是的,您可以将内部查询限制为您想要的任何内容。我刚刚意识到mysql\u num\u行不是我想要的。我只选择了5行,但我需要的是行的总数,而不仅仅是我选择的5行。“我想我会用这个,但你还有什么建议吗?”沃克诺,看看我的安塞尔。您可,php,mysql,sql,Php,Mysql,Sql,n)这样它就不会失去效率。是的,您可以将内部查询限制为您想要的任何内容。我刚刚意识到mysql\u num\u行不是我想要的。我只选择了5行,但我需要的是行的总数,而不仅仅是我选择的5行。“我想我会用这个,但你还有什么建议吗?”沃克诺,看看我的安塞尔。您可以使用find_ROWS()解决这个问题。不过,使用多个查询确实需要考虑并发性。如果在第一个查询完成之后,但在第二个查询开始之前,有什么东西添加或删除行呢?第二个查询返回的计数与第一个查询的结果不一致。(您可以通过在一个事务中以足够高的隔离级别


n)这样它就不会失去效率。是的,您可以将内部查询限制为您想要的任何内容。我刚刚意识到mysql\u num\u行不是我想要的。我只选择了5行,但我需要的是行的总数,而不仅仅是我选择的5行。“我想我会用这个,但你还有什么建议吗?”沃克诺,看看我的安塞尔。您可以使用find_ROWS()解决这个问题。不过,使用多个查询确实需要考虑并发性。如果在第一个查询完成之后,但在第二个查询开始之前,有什么东西添加或删除行呢?第二个查询返回的计数与第一个查询的结果不一致。(您可以通过在一个事务中以足够高的隔离级别执行两个查询来避免这种情况。)是的,我完全同意您的上一句话,确实可以使用
orderby
子句对结果集进行显式排序。事实上,我甚至会说,“仅通过使用
orderby
子句”。)只是有点讽刺,对不起。我发现你的答案很详细,很有教育意义,+1。@Andriy-heh,谢谢:)只是一个吹毛求疵的问题,但在MySQL中,无论好坏,GROUP BY子句也保证返回一个有序的结果集。您甚至可以在GroupBy列表中为表达式指定ASC和DESC修饰符。这非常有趣,谢谢!以前从没听说过。一开始似乎很不寻常,但另一方面,如果你记得MySQL
GROUPBY
允许你通过别名(而不是真名)以及位置号引用列,这也就不足为奇了。在大多数(如果不是全部的话)其他RDBMS中,这两种情况都只允许按顺序进行。因此,如果MySQL
groupby
允许这样做,那么它也接受
ASC
&
DESC
并承担相关功能似乎是一致的。好吧,我不确定这些东西是否应该耦合。我认为通过别名引用表达式是很好和有用的。唯一一个逻辑上不总是起作用的地方是where,即使在那里,它也可以在大部分时间起作用。我个人认为保证groupby返回一个有序集是一个设计缺陷。它使RDBMS做的工作超出了必要的范围。您可以通过添加ORDER by NULL子句覆盖该行为,但许多工具不知道这一点。如果您现在来到这里,请注意,似乎mysql不推荐使用ROWS FOUND解决方案
mysql_query("SELECT * FROM posts LIMIT 0, 5");
mysql_query("SELECT *, COUNT(*) AS total FROM posts LIMIT 0, 5");
mysql_query("SELECT *, (select COUNT(*) from posts) AS total FROM posts LIMIT 0, 5");
$result = mysql_query('SELECT SQL_CALC_FOUND_ROWS * FROM posts LIMIT 0, 5');
//do stuff with the result, but don't do any other queries

//get the total number of rows (disregarding the LIMIT clause) 
$result = mysql_query('SELECT FOUND_ROWS()');
SELECT COUNT(*) AS total FROM posts;
SELECT * FROM posts LIMIT 0, 5
post_id | comment_id
1       | 1
1       | 2
2       | 3
3       | 4
3       | 5
SELECT COUNT(*) AS total FROM posts;
SELECT id FROM posts limit 0, 5;
select p.id, c.id from posts p left join comments c on c.post_id = p.id where id in(id list from above query)