表table1字段1:chengji(成绩) 字段2:paiming(排名)
50 0
80 0
70 0
20 0
90 0如何用1条MYSQL查询语句,运行后让他们变成:字段1:chengji(成绩) 字段2:paiming(排名)
50 4
80 2
70 3
20 5
90 1
50 0
80 0
70 0
20 0
90 0如何用1条MYSQL查询语句,运行后让他们变成:字段1:chengji(成绩) 字段2:paiming(排名)
50 4
80 2
70 3
20 5
90 1
create table sg(chengji int)
insert into sg values (50),(80),(70),(20),(90)#实现
select chengji, (select count(*) from sg s where s.chengji >= sg.chengji) paiming
from sg#结果
chengji paiming
50 4
80 2
70 3
20 5
90 1
CREATE TABLE `t1` (
`xingming` char(10) default NULL,
`chengji` decimal(6,2) default NULL,
KEY `chengji` (`chengji`)
) ;
/*数据*/
insert into t1 (xingming,chengji)
values
('张一',50),
('张二',80),
('张三',70),
('张四',20),
('张五',90),
('张六',90),
('张七',70);
/*思路
排名是这样的
先按分数排序
如果分数一样,则并列第几名
分数不一样,则是他的顺序号
用三个变量实现
@chengji 保存成绩
@mingci 保存名次
@shunxu 保存顺序
*/
set @chengji=0;
set @mingci=1;
set @shunxu=0;
/*sql语句*/
select xingming,chengji,mingci
from
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t;
/*查询结果"张五" "90.00" "1"
"张六" "90.00" "1"
"张二" "80.00" "3"
"张三" "70.00" "4"
"张七" "70.00" "4"
"张一" "50.00" "6"
"张四" "20.00" "7"*/
CREATE TABLE `t1` (
`xingming` char(10) default NULL,
`chengji` decimal(6,2) default NULL,
KEY `chengji` (`chengji`)
) ; 这个表能否增加一个字段paiming,
然后用update语句来让paiming字段都增加上数据呢?我要做的不只是查询,还要update t1 set paiming=
http://blog.chinaunix.net/u/29134/showart_465578.html
CREATE TABLE `t1` (
`xingming` char(10) default NULL,
`chengji` decimal(6,2) default NULL,
`mingci` int(3) NOT NULL,
KEY `t1` (xingming,chengji)
) ;
/*数据*/
insert into t1 (xingming,chengji)
values
('张一',50),
('张二',80),
('张三',70),
('张四',20),
('张五',90),
('张六',90),
('张七',70);
/*思路
排名是这样的
先按分数排序
如果分数一样,则并列第几名
分数不一样,则是他的顺序号
用三个变量实现
@chengji 保存成绩
@mingci 保存名次
@shunxu 保存顺序
*/
set @chengji=0;
set @mingci=1;
set @shunxu=0;
/*sql语句*/
update t1,
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t2
set t1.mingci=t2.mingci
WHERE t1.xingming=t2.xingming and t1.chengji=t2.chengji;
select xingming,chengji,mingci from t1 order by mingci desc;
/*查询结果
"张四" "20.00" "7"
"张一" "50.00" "6"
"张三" "70.00" "4"
"张七" "70.00" "4"
"张二" "80.00" "3"
"张五" "90.00" "1"
"张六" "90.00" "1"
*/
你的语句我使用很好用。我把
set @chengji=0;
set @mingci=1;
set @shunxu=0; update t1,
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t2
set t1.mingci=t2.mingci
WHERE t1.xingming=t2.xingming and t1.chengji=t2.chengji;
放到PHPMYADMIN的SQL里运行,完全达到了效果。我想请问您,我的PHP文件里如何写这几句语句,是这样吗?$query="set @chengji=0";
$result=mysql_query($query,$link);
$query="set @mingci=1";
$result=mysql_query($query,$link);
$query="set @shunxu=0";
$result=mysql_query($query,$link);$query="update t1,
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t2
set t1.mingci=t2.mingci
WHERE t1.xingming=t2.xingming and t1.chengji=t2.chengji";
$result=mysql_query($query,$link);我虽然是个菜鸟,但是我很喜欢学,请您别笑话我。