MySQL里的found_row()與row_count()的解釋及用法
出處:mysqlpub.com
MySQL中有兩個(gè)函數(shù)來計(jì)算上一條語句影響了多少行,不同于SqlServer/Oracle,不要因?yàn)榇朔矫娴牟町惗鸸δ軉栴}:
1,判斷Select得到的行數(shù)用found_rows()函數(shù)進(jìn)行判斷。
2,判斷Update或Delete影響的行數(shù)用row_count()函數(shù)進(jìn)行判斷,這里需要注意,如果Update前后的值一樣,row_count則為0,而不像SqlServer里的@@rowcount或Oracle里的rowcount,只要update到行,影響的行數(shù)就會(huì)大于0,而無論update前后字段的值是否發(fā)生了變化。
例子說明:
MySQL上的測(cè)試(數(shù)據(jù)庫版本為:5.1.30):
1.創(chuàng)建數(shù)據(jù)庫表:
create table t(
id int,
name varchar(50),
address varchar(100),
primary key(id,name)
)engine =InnoDB;
2.插入測(cè)試數(shù)據(jù):
insert into t
(id,name,address)
values
(1,'yubowei','weifang'),
(2,'sam','qingdao');
3.更新測(cè)試
update t
set address = 'weifang'
where id = 1
and name = 'yubowei';
此時(shí)查看影響的行數(shù):
select row_count(); ==〉執(zhí)行結(jié)果為0;
4.再次測(cè)試
update t
set address = 'beijing'
where id = 1
and name = 'yubowei';
此時(shí)查看影響的行數(shù):
select row_count(); ==〉執(zhí)行結(jié)果為1;
從上面的測(cè)試可以得出在MySQL中只有真正對(duì)記錄進(jìn)行修改了的情況下,row_count才會(huì)去記錄影響的行數(shù),否則如果記錄存在但是沒有實(shí)際修改
則不會(huì)將該次更新記錄到row_count中。
這里和oracle中的SQL ROWCOUNT不同
ORACLE上的測(cè)試(數(shù)據(jù)庫版本為:10G):
1.創(chuàng)建數(shù)據(jù)庫表:
create table t(
id int,
name varchar2(50),
address varchar2(100),
primary key(id,name)
);
2.插入測(cè)試數(shù)據(jù):
insert into t
(id,name,address)
values
(1,'yubowei','weifang'),
(2,'sam','qingdao');
3.更新測(cè)試
update t
set address = 'weifang'
where id = 1
and name = 'yubowei';
此時(shí)查看影響的行數(shù):
v_RowCount := SQL%ROWCOUNT; ==〉執(zhí)行結(jié)果為1;
4.再次測(cè)試
update t
set address = 'beijing'
where id = 1
and name = 'yubowei';
此時(shí)查看影響的行數(shù):
v_RowCount := SQL%ROWCOUNT; ==〉執(zhí)行結(jié)果為1;
從上面的測(cè)試可以得出在ORACLE,只要更新的記錄存在,則不論實(shí)際由沒有修改數(shù)據(jù),影響的行數(shù)都會(huì)被累積記錄下來。
注:目前為止沒有什么參數(shù)能對(duì)row_count()能進(jìn)行設(shè)置。如果需要,只能通過其他辦法實(shí)現(xiàn)。
- MySQL中聚合函數(shù)count的使用和性能優(yōu)化技巧
- mysql count詳解及函數(shù)實(shí)例代碼
- 詳細(xì)解讀MySQL中COUNT函數(shù)的用法
- 淺談MySQL 統(tǒng)計(jì)行數(shù)的 count
- mysql count提高方法總結(jié)
- MySQL中無過濾條件的count詳解
- MySQL中count(*)、count(1)和count(col)的區(qū)別匯總
- mysql中count(), group by, order by使用詳解
- MySQL中distinct和count(*)的使用方法比較
- MYSQL中統(tǒng)計(jì)查詢結(jié)果總行數(shù)的便捷方法省去count(*)
- 詳解 MySQL中count函數(shù)的正確使用方法
相關(guān)文章
mysql中數(shù)據(jù)統(tǒng)計(jì)的技巧備忘錄
mysql是常用數(shù)據(jù)庫,對(duì)于數(shù)字操作相關(guān)的東西相當(dāng)方便,這篇文章主要給大家介紹了關(guān)于mysql中數(shù)據(jù)統(tǒng)計(jì)技巧的相關(guān)資料,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-05-05MySQL多表關(guān)聯(lián)查詢相關(guān)練習(xí)題
這篇文章主要給大家介紹了關(guān)于MySQL多表關(guān)聯(lián)查詢的相關(guān)資料,在MySQL中JOIN語句是實(shí)現(xiàn)多表關(guān)聯(lián)查詢的關(guān)鍵,它可以將多個(gè)表格中符合條件的數(shù)據(jù)連接在一起,從而提供一個(gè)完整的查詢結(jié)果,需要的朋友可以參考下2023-10-10一看就懂的MySQL的聚簇索引及聚簇索引是如何長(zhǎng)高的
聚簇索引不是一種單獨(dú)的索引類型,而是一種數(shù)據(jù)存儲(chǔ)方式。innodb的聚簇索引實(shí)際上在同一個(gè)結(jié)構(gòu)中保存了B-tree索引和數(shù)據(jù)行。通過本文學(xué)習(xí)MySQL的聚簇索引及聚簇索引是如何長(zhǎng)高的,感興趣的朋友一起學(xué)習(xí)下吧2021-05-05MySQL使用命令創(chuàng)建、刪除、查詢索引的介紹
今天小編就為大家分享一篇關(guān)于MySQL使用命令創(chuàng)建、刪除、查詢索引的介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03