从带有索引的选择查询中添加列

时间:2018-11-07 13:26:43

标签: mysql sql

如何从选择查询中添加一列,但新列中的值将是例如选择查询的行数。

select quantity from menu;

并返回这样

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

但是我想要这样的东西

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

新列应从1开始,并从select查询语句的行数结束。任何答案都会有所帮助

4 个答案:

答案 0 :(得分:1)

you can access the latest version of MySQL起,我们可以简单地使用Row_Number()功能:

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

答案 1 :(得分:1)

您可以使用:

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

这假定您希望按降序对行进行枚举。

答案 2 :(得分:1)

请参阅:https://stackoverflow.com/a/6055852/3368558

例如:

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

答案 3 :(得分:1)

在这种情况下,您首先需要使用SET定义变量@inc,然后将默认值指定为0。

然后将@inc包含在SELECT语句中。您甚至可以使用AS为变量表达式起绰号。

作为SELECT的一部分,您还要增加@inc中的值。

代码看起来像这样:

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

希望会有所帮助!