2013-10-12 77 views
0

我有以下MySQL表如何重复序列号在MySQL表

name city 
umar  mzd 
ali  mzd 
john  bagh 
saeed bagh 
irum  bagh 

我要添加序列号的方式,序列号重复时,城市的名字改变为如下

S.No name  city 
    1 umar  mzd 
    2 ali  mzd 
    1 john  bagh 
    2 saeed  bagh 
    3 irum  bagh 
+0

你到目前为止尝试了什么? –

+0

我尝试生成序列号但无法重复输入 – user2021672

+0

当您选择数据时,在模拟MySQL中的RANK()OVER PARTITION时可能会出现这种情况,但您需要使用用户变量,但如果表包含很多记录 –

回答

0

这里,这给出一个尝试:

select name, city, serial_number from 
    (select name, city 
    , (case when @city <> city then @citynum := 1 else @citynum := @citynum + 1 end) as serial_number 
    , (case when @city <> city then @city := city end) as v 
    from tbl_cities, (select @citynum := 0, @city := '') as c 
order by city) as cities 

这里是你投放了链接:http://sqlfiddle.com/#!2/615f5/1

您需要将'tbl_cities'更改为表格的名称。

我无法将它保存为视图或在更新语句中使用,因为它使用变量。一种快捷的方法是使用上面的select语句创建一个新表,并在添加新数据时定期运行。

drop table if exists tbl_cities_serial; 

create table tbl_cities_serial(select name, city, serial_number from 
(select name, city 
    , (case when @city <> city then @citynum := 1 else @citynum := @citynum + 1 end) as serial_number 
    , (case when @city <> city then @city := city else @city end) as v 
from tbl_cities, (select @citynum := 0, @city := '') as c 
order by city) as cities)