Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql更新查询:添加带有值的表列_Mysql_Sql_Sql Update_Sql Order By_Multiple Columns - Fatal编程技术网

mysql更新查询:添加带有值的表列

mysql更新查询:添加带有值的表列,mysql,sql,sql-update,sql-order-by,multiple-columns,Mysql,Sql,Sql Update,Sql Order By,Multiple Columns,表中有3列: id Name Rating 1 John 0.976 2 Mark 0.500 3 Andrew 0.976 4 Jane 1.000 可以执行什么sql查询来为此表创建一个新的id\u new列,因此id\u new实际上是具有排序依据评级的列 因此,新表将是: new_id id Name Rating 1 4 Jane 1.000 2 3 Andrew 0.976 3 1 John 0

表中有3列:

id Name   Rating
1  John   0.976
2  Mark   0.500
3  Andrew 0.976
4  Jane   1.000
可以执行什么sql查询来为此表创建一个新的
id\u new
列,因此
id\u new
实际上是具有排序依据
评级的列

因此,新表将是:

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
您可以看到,此表看起来像是按
评级进行排序的

如何使用mySql查询实现这一点


谢谢。

如果要修改表的结构并添加新列,请执行以下操作:

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;
SET @new_id:=0;
SELECT
   (@new_id := @new_id + 1) AS new_id,
   id,
   name,
   rating
FROM
   table_name
ORDER BY
    rating DESC;
如果不想修改结构,只需返回带有新列的
选择

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;
SET @new_id:=0;
SELECT
   (@new_id := @new_id + 1) AS new_id,
   id,
   name,
   rating
FROM
   table_name
ORDER BY
    rating DESC;

您是否在询问如何对DESC byRating进行排序并显示结果中每行的排名?或者如何添加新列?为什么要这样做?