2013-07-28 27 views
1

有3列在表:MySQL的UPDATE查詢:添加具有值的表列

id Name Rating 
1 John 0.976 
2 Mark 0.500 
3 Andrew 0.976 
4 Jane 1.000 

什麼SQL查詢可以做,以創建一個新的id_new列此表,以便id_new實際上是列已訂購Rating

因此,新表將是:

new_id id Name  Rating 
1  4 Jane  1.000 
2  3 Andrew 0.976 
3  1 John  0.976 
4  2 Mark  0.500 

你看這個表看起來就像是由Rating排序遞減。

如何使用mySql查詢來做到這一點?

謝謝。

+0

你問如何排序DESC byRating並顯示結果中每行的排名?或者如何添加一個新的列? – TuK

+0

你爲什麼要這麼做? – Strawberry

回答

2

如果要修改表的結構,並添加新列:

ALTER TABLE `table_name` ADD `new_id` INT(11) NOT NULL FIRST; 

SET @new_id:=0; 
UPDATE 
    table_name 
SET 
    new_id = (@new_id := @new_id + 1) 
ORDER BY 
    rating DESC; 

如果你不想修改結構,只返回一個SELECT新柱:

SET @new_id:=0; 
SELECT 
    (@new_id := @new_id + 1) AS new_id, 
    id, 
    name, 
    rating 
FROM 
    table_name 
ORDER BY 
    rating DESC; 
0
ALTER TABLE_NAME ADD new_id int(6) FIRST;