ID 名字
001 张三
002 李四
003 王五
001 张三
002 李四
003 王五
001 张三
002 李四
003 王五
我希望的查询结果显示为
序号 ID 姓名
1 001 张三
2 001 张三
3 001 张三
1 002 李四
2 002 李四
3 002 李四
1 003 王五
2 003 王五
3 003 王五
希望大大们给一个 MySql 的查询语句
11 个解决方案
#1
select
序号= Row_Number()over(partition by ID)
,ID, 名字
from t
序号= Row_Number()over(partition by ID)
,ID, 名字
from t
#2
SELECT (@i:=@i+1) as 序号 ,t.* from 表A t
#3
SELECT c1.*
,IF(c2.id=@cid, @rn:=@rn+1,@rn:=1) as rn
,@cid:=c2.id
from (select * from t order by ID)c1
join (select distinct ID from t order by id) c2 on c1.id=c2.id
CROSS join (select @rn:=0,@cid=0) c3
#4
select ROW_NUMBER() over(partition by id order by id desc) as 序号,* from table1
#5
select ROW_NUMBER() over(partition by ID order by ID desc) as 序号,* from xxb
#6
这个好像是对的
#7
use Tempdb
go
--> -->
declare @T table([ID] nvarchar(23),[名字] nvarchar(22))
Insert @T
select N'001',N'张三' union all
select N'002',N'李四' union all
select N'003',N'王五' union all
select N'001',N'张三' union all
select N'002',N'李四' union all
select N'003',N'王五' union all
select N'001',N'张三' union all
select N'002',N'李四' union all
select N'003',N'王五'
Select 序号=ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID),* from @T
/*
序号 ID 名字
1 001 张三
2 001 张三
3 001 张三
1 002 李四
2 002 李四
3 002 李四
1 003 王五
2 003 王五
3 003 王五
*/
#8
mysql 的库,用 3# 的,记些前些日子,答过一个这样的问题,翻不到了;
#9
SET @rowindex=0,@ID='';
SELECT if(a.ID=@ID,@rowindex:=@rowindex+1,@rowindex:=1) AS rn,a.*,@ID:=a.ID as ID2
from tab1 as a
order by a.ID;
#10
Row_Number()over(partition by 列名)
#11
select
序号= Row_Number()over(partition by ID)
,ID, 名字
from t
序号= Row_Number()over(partition by ID)
,ID, 名字
from t
#1
select
序号= Row_Number()over(partition by ID)
,ID, 名字
from t
序号= Row_Number()over(partition by ID)
,ID, 名字
from t
#2
SELECT (@i:=@i+1) as 序号 ,t.* from 表A t
#3
SELECT c1.*
,IF(c2.id=@cid, @rn:=@rn+1,@rn:=1) as rn
,@cid:=c2.id
from (select * from t order by ID)c1
join (select distinct ID from t order by id) c2 on c1.id=c2.id
CROSS join (select @rn:=0,@cid=0) c3
#4
select ROW_NUMBER() over(partition by id order by id desc) as 序号,* from table1
#5
select ROW_NUMBER() over(partition by ID order by ID desc) as 序号,* from xxb
#6
这个好像是对的
#7
use Tempdb
go
--> -->
declare @T table([ID] nvarchar(23),[名字] nvarchar(22))
Insert @T
select N'001',N'张三' union all
select N'002',N'李四' union all
select N'003',N'王五' union all
select N'001',N'张三' union all
select N'002',N'李四' union all
select N'003',N'王五' union all
select N'001',N'张三' union all
select N'002',N'李四' union all
select N'003',N'王五'
Select 序号=ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID),* from @T
/*
序号 ID 名字
1 001 张三
2 001 张三
3 001 张三
1 002 李四
2 002 李四
3 002 李四
1 003 王五
2 003 王五
3 003 王五
*/
#8
mysql 的库,用 3# 的,记些前些日子,答过一个这样的问题,翻不到了;
#9
SET @rowindex=0,@ID='';
SELECT if(a.ID=@ID,@rowindex:=@rowindex+1,@rowindex:=1) AS rn,a.*,@ID:=a.ID as ID2
from tab1 as a
order by a.ID;
#10
Row_Number()over(partition by 列名)
#11
select
序号= Row_Number()over(partition by ID)
,ID, 名字
from t
序号= Row_Number()over(partition by ID)
,ID, 名字
from t