2015-11-03 27 views
0

SQL中是否可以選擇列中的值然後重命名重複的值? (假設最大的一個可能重複的只)SQL - 在列中選擇相同的值,然後重命名它們

比方說,我有一個表..

| id | name | 0or1_id | 
| 0 | Eddy | 0  | 
| 1 | Allan | 0  | 
| 2 | Eddy | 1  | 
| 3 | Allan | 1  | 

我能做些什麼,查詢,使它象這樣?

| id | name  | 0or1_id | 
| 0 | Eddy  | 0  | 
| 1 | Allan  | 0  | 
| 2 | Eddy-copy | 1  | 
| 3 | Allan-copy | 1  | 
+2

..你已經標記爲特定MySQL和SQL server..be是不同的一個... –

+2

有什麼目的,這背後? –

回答

0

假設你想真正改變數據,使用update

update t join 
     (select name, count(*) as cnt, min(id) as minid 
     from t 
     group by name 
     having cnt > 1 
     ) tt 
     on t.name = tt.name and t.id <> tt.minid 
    set name = concat(name, '-copy'); 

如果你只想要一個select,那麼邏輯非常相似。

0

這將在SQL Server的工作..

select id , name ,0or1_id from (
select id , name ,0or1_id ,row_number() over (partition by name order by id) as rnm 
from table)z1 
where rnm =1 
union 
select id , name || '- Copy' as new_name ,0or1_id from (
select id , name ,0or1_id ,row_number() over (partition by name order by id) as rnm 
from table)z2 
where rnm > 2 
+1

這在MySQL中不起作用。 –

+0

@ GordonLinoff ..這就是爲什麼提到SQL Server。沒有看到標籤被更改爲MySQL。 –

相關問題