Ҳ̸MySQLÖÐʵÏÖROWNUM
À´Ô´ http://e-xia.com/2009/06/rownum-in-mysql/
ÔÚ¹¤×÷ÖÐÅöµ½ÕâÑùµÄÎÊÌ⣬ÔÚÉú³É±¨±íʱµÚÒ»ÁÐÒªÊä³ötop 1, top 2, ... , top 10¡£¶ømysql²¢²»×Ô´øÕâÑùµÄ¹¦ÄÜ¡£¼ÙÉèÎÒÃÇÓÐÕâÑùµÄÒ»¸ö±í£º
mysql> create table tbl (
-> id int primary key,
-> col int
-> );
Query OK, 0 rows affected (0.08 sec)
mysql> insert into tbl values
-> (1,26),
-> (2,46),
-> (3,35),
-> (4,68),
-> (5,93),
-> (6,92);
Query OK, 6 rows affected (0.05 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> select * from tbl order by col;
+----+------+
| id | col |
+----+------+
| 1 | 26 |
| 3 | 35 |
| 2 | 46 |
| 4 | 68 |
| 6 | 92 |
| 5 | 93 |
+----+------+
6 rows in set (0.00 sec)
ÖйæÖоصÄ×ö·¨ÊÇ£º
SET
@x=
0
;
SELECT
@x:=
@x AS
rownum,
id,
col
from
tbl
ORDER
BY
col;
µ«ÊÇÕâÑù¾Í±ä³ÉÁËÁ½¸öquery£¬ÔÚjavaÀïÃæÓÃexecuteQuery»áÓÐÎÊÌâ¡£
µ±Ê±×Ô¼ºÏëµ½µÄÊÇÕâÑù£º
SELECT
@x :=
IFNULL(
@x,
0
)
+
1
AS
rownum,
id,
col
from
tbl
ORDER
BY
col;
µ«ÊǵÚÒ»´ÎÔËÐеÄʱºòrownum¶¼ÊÇ1£¬µÚ¶þ´ÎÔËÐÐrownum±ä³É2-11£¬µÚÈý´ÎΪ12-21¡£
ºóÀ´ÓÖ¿´µ½Ò»Ð©ºÜÐü£¬¶øÇÒ¿´ÉÏÈ¥ºÜûÓÐЧÂʵķ½·¨£¬ÀýÈ磺
ʹÓÃÁª½Ó²éѯ£¨µÑ¿¨¶û»ý£©
SELECT
a.
id,
a.
col,
COUNT(
*
)
AS
rownum
from
tbl a,
tbl b
WHERE
a.
col>=
b.
col
GROUP
BY
a.
id,
a.
col;
×Ó²éѯ
SELECT
a.*,
(
SELECT
count(
*
)
from
tbl WHERE
col<=
a.
col)
AS
rownum
from
tbl a;
ÕâЩ¶¼²»ÊÇÎÒÒªµÄ£¡£¡
×îºóÎÒÕÒµ½Á˵ÚÒ»ÖÖ·½·¨µÄ¸ÄÁ¼Ë¼Â·£¬×öÁËһЩ¸Ä¶¯£¬ËäÈ»»¹ÊÇÈÆÁËÒ»¸öСÍ䣬µ«ÊÇÒѾºÜºÃÓÃÁË£º
SELECT
@rownum:=
@rownum+1
rownum,
id,
col
from
(
SELECT
@rownum:=
0
,
*
from
tbl
ORDER
BY
col DESC
)
t;
¸ü½øÒ»²½µÄÓ¦ÓÃÊÇ£¬µ±ÓÐÁ½¸ötableÒª²¢ÅÅ·ÅÔÚÒ»Æð£¬ÀýÈçÒ»¸öorder by id£¬ÁíÒ»¸öorder by
col£¬ÔÏȵÄ×ö·¨ÊÇдÁ½¸öquery£¬È»ºóÔÚÒ³ÃæÀï²¢ÅÅ·Å£¬²»¹ýÓÐÁËrownumÒÔºó¾Í¿ÉÒÔÓÃjoinÖ±½ÓÊä³öÍêÈ«·ûºÏÒªÇóµÄtableÁË¡£
²Î¿¼²ÄÁÏ£º
MySQL
ÖеÄROWNUMµÄʵÏÖ
How
to number rows i
Ïà¹ØÎĵµ£º
µÚÒ»ÖÖ·½·¨£º
rootÓû§µÇ¼ϵͳ
usr/local/mysql/bin/mysqladmin -u root -p password ÐÂÃÜÂë
enter password ¾ÉÃÜÂë
µÚ¶þÖÖ·½·¨£º
rootÓû§µÇ¼mysqlÊý¾Ý¿â
mysql> update mysql.user set password=password("ÐÂÃÜÂë")where User="root";
mysql> flush privileges;
mysql> quit ;
mysqlÍü¼ÇrootÃÜÂëÈçºÎ ......
µ±Ì¸µ½¿ªÔ´Êý¾Ý¿âʱ£¬MySQL»ñ
µÃÁËÒµ½ç´ó²¿·ÖµÄ×¢ÒâÁ¦£¬MySQLÊÇÒ»¸öÒ×ÓÚʹÓõÄÊý¾Ý¿â£¬Í¬Ê±ÓÐÐí¶à¿ªÔ´µÄWebÓ¦ÓóÌÐò¶¼ÊÇÖ±½ÓÔÚËüÉÏÃæ¿ª·¢µÄ¡£
ÁíÍâÒ»ÖÖÖ÷ÒªµÄ¿ªÔ´Êý¾Ý¿âÊÇPostgreSQL£¬ËäÈ»ËüÒ²ÊÇÖÚËùÖÜÖªµÄ£¬µ«ÊÇȴûÓлñµÃÏñMySQLËùµÃµ½µÄÈϿɡ£ÕâÊǺܲ»Ðҵģ¬ÒòΪÔÚÕâÁ½Õß
ÖУ¬Ïà±ÈMySQL£¬PostgreSQLÄÜÌṩ¸ü¼Ó°²È ......
# tar -zxvf mysql-5.0.45.tar.gz -C /usr/src/
# cd /usr/src/mysql-5.0.45
# ./configure --prefix=/usr/local/mysql --with-charset=gbk
--localstatedir=/usr/local/mysql/data
# make
# make install
# groupadd mysql
# useradd mysql -g mysql
# cd /usr/local/mysql/bin
# ./mysql_install_db --user=mys ......
.¹Ø±ÕÏÖÓÐmysql
.²»¼ÓÔØgrant_tables¶ø½øÈëmysql
D:\>mysqld-nt --skip-grant-tables OR mysqld_safe --skip-grant-tables
.пªÒ»¸öcmd´°¿Ú,È»ºó°´ÏÂÃæÖ´ÐÐ
D:\>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-community-nt ......
query result(14 records)
id
uid
gid
1
11
502
2
107
502
3
100
503
4
110
501
5
112
501
6
104
502
7
100
502
8
100
501
9
102
501
10
104
502
11
100
502
12
100
501
13
102
501
14
110
501
µÚÆßÌõÓëµÚʮһÌõÖØ¸´µÈ
·½·¨Ò»
mysql> create temporary table tmp_wrap ......