使用索引从select查询添加列

vaqhlq81  于 2021-06-18  发布在  Mysql
关注(0)|答案(4)|浏览(260)

如何从select查询中添加列,但新列的值将是select查询的行计数。

select quantity from menu;

然后像这样回来

+--------+
|quantity|
+--------+
|   50   |
|   32   |
|   23   |
+--------+

但我想要这样的东西

+----------+--------+
|new column|quantity|
+----------+--------+
|     1    |   50   |
|     2    |   32   |
|     3    |   23   |
+----------+--------+

新列应该从select查询语句的1开始,从行计数结束。任何回答都会有帮助的谢谢

eimct9ow

eimct9ow1#

您可以使用:

select row_number() over (order by quantity desc) as col1, quantity
from menu;

这假设您希望按数量降序枚举行。

tez616oj

tez616oj2#

由于您可以访问最新版本的mysql,我们只需使用 Row_Number() 功能:

SELECT  
  ROW_NUMBER() OVER () AS new_column, 
  quantity 
FROM menu;
tvmytwxo

tvmytwxo3#

在这种情况下,您需要做的是首先使用set定义变量@inc,然后指定默认值0。
然后将@inc作为select语句的一部分。甚至可以使用as作为变量表达式的昵称。
作为选择的一部分,您还需要注意增加@inc中的值。
代码如下所示:

SET @inc :=0;
SELECT
 @inc := @inc + 1 AS a, 
`some_field` 
FROM 
`some_table`;

希望能有帮助!

9lowa7mx

9lowa7mx4#

请参见:https://stackoverflow.com/a/6055852/3368558
举个例子:

select @rownum:=@rownum+1 as rowNum, quantity 
from menu  
CROSS JOIN (SELECT @rownum:=0) AS user_init;

相关问题