mysql中怎麼解決關於ROW

2022-03-21 18:32:51 字數 5554 閱讀 1771

1樓:好程式設計師

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中。

備註:今天用prepare動態處理了update語句後,發現row_count()函式返回的老是-1 ,檢查了下原來是把row_count()放到了deallocate 語句後面了。

2樓:哦有二說二

mysql> create table tb(name varchar(30),age int);

query ok, 0 rows affected (1.27 sec)

mysql> insert tb

-> select 'a',18 union all

-> select 'b',19 union all

-> select 'c',22 union all

-> select 'd',17;

query ok, 4 rows affected (1.34 sec)

records: 4 duplicates: 0 warnings: 0

mysql> set @mycnt = 0;

query ok, 0 rows affected (0.00 sec)

mysql> select * from (

-> select (@mycnt := @mycnt + 1) as rownum,name,age

-> from tb where age < 20 order by name,age

-> ) as a;

+--------+------+------+

| rownum | name | age |

+--------+------+------+

| 1 | a | 18 |

| 2 | b | 19 |

| 3 | d | 17 |

+--------+------+------+

3 rows in set (0.00 sec)

mysql中怎麼解決關於row

3樓:匿名使用者

mysql> create table tb(name varchar(30),age int);

query ok, 0 rows affected (1.27 sec)

mysql> insert tb

-> select 'a',18 union all

-> select 'b',19 union all

-> select 'c',22 union all

-> select 'd',17;

query ok, 4 rows affected (1.34 sec)

records: 4 duplicates: 0 warnings: 0

mysql> set @mycnt = 0;

query ok, 0 rows affected (0.00 sec)

mysql> select * from (

-> select (@mycnt := @mycnt + 1) as rownum,name,age

-> from tb where age < 20 order by name,age

-> ) as a;

+--------+------+------+

| rownum | name | age |

+--------+------+------+

| 1 | a | 18 |

| 2 | b | 19 |

| 3 | d | 17 |

+--------+------+------+

3 rows in set (0.00 sec)

4樓:夜獨行孤單

mysql要用變數如:

set @row=0

select

*from

(select (@row:=@row+1) as rownum,* from 表--這裡加排序用order by

)as a

sql server --row_numberoracle--row_number/rownum

mysql中怎麼解決關於row

5樓:育知同創教育

mysql中有兩個函式來計算上一條語句影響了多少行,不同於sqlserver/oracle,不要因為此方面的差異而引起功能問題:

1,判斷select得到的行數用found_rows()函式進行判斷。

2,判斷update或delete影響的行數用row_count()函式進行判斷,這裡需要注意,如果update前後的值一樣,row_count則為0,而不像sqlserver裡的@@rowcount或oracle裡的rowcount,只要update到行,影響的行數就會大於0,而無論update前後欄位的值是否發生了變化。

6樓:

mysql> create table tb(name varchar(30),age int);

query ok, 0 rows affected (1.27 sec)

mysql> insert tb

-> select 'a',18 union all

-> select 'b',19 union all

-> select 'c',22 union all

-> select 'd',17;

query ok, 4 rows affected (1.34 sec)

records: 4 duplicates: 0 warnings: 0

mysql> set @mycnt = 0;

query ok, 0 rows affected (0.00 sec)

mysql> select * from (

-> select (@mycnt := @mycnt + 1) as rownum,name,age

-> from tb where age < 20 order by name,age

-> ) as a;

+--------+------+------+

| rownum | name | age |

+--------+------+------+

| 1 | a | 18 |

| 2 | b | 19 |

| 3 | d | 17 |

+--------+------+------+

3 rows in set (0.00 sec)

7樓:j**aa之歌

請問 你想要問什麼啊

mysql中怎麼解決關於row

8樓:育知同創教育

mysql中解決row的問題:

1、判斷select得到的行數用found_rows()函式進行判斷。

2、判斷update或delete影響的行數用row_count()函式進行判斷,這裡需要注意,如果update前後的值一樣,row_count則為0,而不像sqlserver裡的@@rowcount或oracle裡的rowcount,只要update到行,影響的行數就會大於0,而無論update前後欄位的值是否發生了變化。

此時檢視影響的行數:

select row_count(); ==〉執行結果為1;

從上面的測試可以得出在mysql中只有真正對記錄進行修改了的情況下,row_count才會去記錄影響的行數,否則如果記錄存在但是沒有實際修改

則不會將該次更新記錄到row_count中。

9樓:匿名使用者

mysql> create table tb(name varchar(30),age int);

query ok, 0 rows affected (1.27 sec)

mysql> insert tb

-> select 'a',18 union all

-> select 'b',19 union all

-> select 'c',22 union all

-> select 'd',17;

query ok, 4 rows affected (1.34 sec)

records: 4 duplicates: 0 warnings: 0

mysql> set @mycnt = 0;

query ok, 0 rows affected (0.00 sec)

mysql> select * from (

-> select (@mycnt := @mycnt + 1) as rownum,name,age

-> from tb where age < 20 order by name,age

-> ) as a;

+--------+------+------+

| rownum | name | age |

+--------+------+------+

| 1 | a | 18 |

| 2 | b | 19 |

| 3 | d | 17 |

+--------+------+------+

3 rows in set (0.00 sec)

PHP中MYSQL資料庫亂碼問題,跪求解決方案

可能需要修改資料庫的配置 一般情況下我們在設計資料庫的時候都會事先確定好要用的字符集,但當我們要使用以前的資料的時候,可能會遇到字符集不同的問題,字符集的修改不能通過alert database charest set 來直接修改,這樣只是影響以後的資料,對已有的資料沒有用,那怎麼辦那 我們模擬講l...

mysql中enum型別怎麼設定

從 mysql 3.23.51 開始,當表被建立時,enum 值尾部的空格將會自動刪除。當為一個 enum 列賦值時,字母的大小寫是無關緊要的。然而,以後從列中檢索出來的值的大小寫卻是匹配於建立表時所指定的允許值。如果在一個數字語境中檢索一個enum,列值的索引值將被返回。例如,可以像這樣使用數字值...

mysql中怎麼檢視當前在哪個庫中

講解的是mysql資料庫中儲存引擎的知識,使用命令的方式檢視當前資料庫伺服器用的什麼儲存引擎。本 的目的在於一方面學習熟悉命令,另一方面為後續的學習儲存引擎知識做鋪墊。在mysql中怎麼樣檢視所在的資料庫名 可以使用這兩種方式檢視資料庫名 1 用select database 語句 2 用statu...