MySQL行號問題
MySQL技術內幕 SQL程式設計 114頁
方法一,相關子查詢
需要一個唯一列,並且這個列本身有一定的順序。
如果這個列本身沒有順序,則不能生成rownum。不過考慮到InnoDB是索引組織表,根據主鍵都是符合要求的。
方法二,笛卡爾積
需要一個唯一列,並且這個列本身有一定的順序。
方法三 使用者自定義變數
方法一,相關子查詢
需要一個唯一列,並且這個列本身有一定的順序。
-
create table test(
-
name varchar(20) primary key
-
);
-
-
insert into test values('A');
-
insert into test values('B');
-
insert into test values('C');
-
commit;
-
-
--子查詢
-
select name,(select count(*) from test t1 where t2.name>=t1.name) rownum from test t2;
--中間結果
-
mysql> select count(*) from test where name<='A';
-
+----------+
-
| count(*) |
-
+----------+
-
| 1 |
-
+----------+
-
1 row in set (0.00 sec)
-
-
mysql> select count(*) from test where name<='B';
-
+----------+
-
| count(*) |
-
+----------+
-
| 2 |
-
+----------+
-
1 row in set (0.00 sec)
-
-
mysql> select count(*) from test where name<='C';
-
+----------+
-
| count(*) |
-
+----------+
-
| 3 |
-
+----------+
- 1 row in set (0.00 sec)
如果這個列本身沒有順序,則不能生成rownum。不過考慮到InnoDB是索引組織表,根據主鍵都是符合要求的。
-
create table test(
-
name int
-
);
-
-
insert into test values(200);
-
insert into test values(150);
-
insert into test values(250);
-
commit;
-
-
mysql> select name,(select count(*) from test t1 where t2.name>=t1.name) rownum from test t2;
-
+------+--------+
-
| name | rownum |
-
+------+--------+
-
| 200 | 2 |
-
| 150 | 1 |
-
| 250 | 3 |
-
+------+--------+
- 3 rows in set (0.00 sec)
方法二,笛卡爾積
需要一個唯一列,並且這個列本身有一定的順序。
-
mysql> select a.name,count(*) from test a,test b where a.name>=b.name group by a.name;
-
+------+----------+
-
| name | count(*) |
-
+------+----------+
-
| A | 1 |
-
| B | 2 |
-
| C | 3 |
-
+------+----------+
-
3 rows in set (0.01 sec)
-
-
--中間結果
-
mysql> select a.*,b.* from test a,test b where a.name>=b.name ;
-
+------+------+
-
| name | name |
-
+------+------+
-
| A | A |
-
| B | A |
-
| B | B |
-
| C | A |
-
| C | B |
-
| C | C |
-
+------+------+
- 6 rows in set (0.00 sec)
方法三 使用者自定義變數
-
mysql> set @a=0;
-
Query OK, 0 rows affected (0.00 sec)
-
-
mysql> select name,@a:=@a+1 from test;
-
+------+----------+
-
| name | @a:=@a+1 |
-
+------+----------+
-
| A | 1 |
-
| B | 2 |
-
| C | 3 |
-
+------+----------+
- 3 rows in set (0.00 sec)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1146496/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL自定義變數處理行號問題MySql變數
- MySQL自增主鍵跳號問題MySql
- php+mysql 解決emoji表情符號問題PHPMySql符號
- MySQL 處理行號MySql
- mysql語句中有引號的問題解決方案MySql
- Mysql中獲取行號MySql
- 無題號 分配問題 題解
- MySQL 問題MySql
- sqlplus註釋行號錯誤的問題SQL
- Mysql執行批量sql時的格式問題MySql
- mysql中文進行全文索引支援問題MySql索引
- mysql的執行計劃快取問題MySql快取
- 斷號查詢問題
- 使用執行緒模擬解決銀行排隊叫號問題執行緒
- mysql執行truncate drop 時卡死問題解決MySql
- MySQL 除法問題MySql
- MySQL range問題MySql
- Jedis 與 MySQL的連線執行緒安全問題MySql執行緒
- 版本號比較大小問題
- Vue的api埠號問題VueAPI
- JN專案-序號問題
- ACM 括號配對問題ACM
- mysql 轉義問題MySql
- MySQL死鎖問題MySql
- MySQL大小寫問題MySql
- mysql常見問題MySql
- MySQL 常見問題MySql
- mysql亂碼問題MySql
- mysql的中文問題MySql
- mysql 遇到的問題MySql
- Mysql:常見問題MySql
- crontab不執行mysql的指令碼問題的解決!MySql指令碼
- MySQL訪問受限的問題分析MySql
- 急問:mysql出現的問題MySql
- 解決Oracle序列跳號問題Oracle
- 向SQLServer插入單引號問題SQLServer
- 扯不完的 JS 分號問題JS
- EJB QL裡的〈符號問題符號