如何从选择查询中添加一列,但新列中的值将是例如选择查询的行数。
select quantity from menu;
并返回这样
+--------+
|quantity|
+--------+
| 50 |
| 32 |
| 23 |
+--------+
但是我想要这样的东西
+----------+--------+
|new column|quantity|
+----------+--------+
| 1 | 50 |
| 2 | 32 |
| 3 | 23 |
+----------+--------+
新列应从1开始,并从select查询语句的行数结束。任何答案都会有所帮助
答案 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`;
希望会有所帮助!