zoukankan      html  css  js  c++  java
  • ROW_COUNT() & FOUND_ROWS()

    轉自:http://longxzq-126-com.iteye.com/blog/586694 

    在Mysql中ROW_COUNT()返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数。

    下面通过一个更新的例子来说明:

    MySQL上的测试(数据库版本为:5.1.22):

    1.创建数据库表:

    create table t(
    id
    int,
    name
    varchar(50),
    address
    varchar(100),
    primary key(id,name)
    )engine
    =InnoDB;

     
    2.插入测试数据:

    insert into t
    (id,name,address)
    values
    (
    1,'yubowei','weifang'),
    (
    2,'sam','qingdao');

    3.更新:
    update t set address = 'weifang'
    where id = 1 and name = 'yubowei';
    此时查看影响的行数:
    select row_count(); ==〉执行结果为0;

     4.再更新:
    update t set address = 'beijing'
    where id = 1 and name = 'yubowei';
    此时查看影响的行数:
    select row_count(); ==〉执行结果为1;
    从上面的测试可以得出在MySQL中只有真正对记录进行修改了的情况下,row_count才会去记录影响的行数,否则如果记录存在但是没有实际修改则不会将该次更新记录到row_count中。

    在Mysql中ROW_COUNT()返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数,與php中的mysql_affected_rows()效果一致.

    我们一般用 COUNT() 或者 mysql_num_rows() 来获取查询的行数;

    在MySQL4,5里面,有 SQL_CALC_FOUND_ROWS 可以在查询的同时,计算行数:

    $query = "SELECT SQL_CALC_FOUND_ROWS * FROM title WHERE ID >1000 LIMIT 10;";

    $result = $db->query($query);

    $line = $db->fetch_row($db->query("SELECT FOUND_ROWS();"));

    print_r($line);

    此时,不用额外的查询,即可得到

    SELECT count(id) FROM tabled WHERE id>1000;

    这样子的结果了。

    不过,http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#limit-optimization 说:

    只要MySQL已经发送了需要的行数到客户,它将放弃查询,除非你正使用SQL_CALC_FOUND_ROWS。


     

  • 相关阅读:
    [BZOJ1625][Usaco2007 Dec]宝石手镯
    [BZOJ1699][Usaco2007 Jan]Balanced Lineup排队
    [BZOJ1606][Usaco2008 Dec]Hay For Sale 购买干草
    [BZOJ1610][Usaco2008 Feb]Line连线游戏
    [BZOJ1609][Usaco2008 Feb]Eating Together麻烦的聚餐
    [BZOJ1602][Usaco2008 Oct]牧场行走
    [BZOJ1601][Usaco2008 Oct]灌水
    [BZOJ1607][Usaco2008 Dec]Patting Heads 轻拍牛头
    [BZOJ1579][Usaco2008 Mar]土地购买
    HDU 4248 A Famous Stone Collector 组合数学dp ****
  • 原文地址:https://www.cnblogs.com/Athrun/p/2154674.html
Copyright © 2011-2022 走看看