从SELECT编号SQL元组时获取NULL值

时间:2014-01-22 16:16:18

标签: mysql sql select row-number

我需要在SELECT查询的每一行中获得一个渐进数字。

即。查询结果没有编号:

user_id
paola
Carla
Marta

我想要的是

number user_id
1      paola
2      Carla
3      Marta

我知道问题与

中的问题非常相似

MySQL - Get row number on select

在第一个查询中,答案中建议的代码似乎对我有用但是当我回想起查询时,或者当我尝试导出结果时,我在行编号所在的列中得到一个NULL值是。

你知道为什么吗? 我在变量实例中做错了吗?

我使用的代码如下:

set @x=0;

SELECT @x:=@x + 1 AS row_index, user_id FROM TABLE ORDER BY user_id

2 个答案:

答案 0 :(得分:0)

您的查询看起来是正确的。我的猜测是你有一个拼写错误,所以设置的变量与递增的变量不同。

顺便说一下,这些可以组合成一个语句:

SELECT @x:=@x + 1 AS row_index, user_id
FROM TABLE cross join
     (select @x := 0) const
ORDER BY user_id;

也就是说,select实际上可以初始化变量。

答案 1 :(得分:0)

试试这个

 SELECT @x:=@x + 1 AS row_index, user_id FROM 
      ( SELECT row_index , user_id from TABLE ORDER BY user_id ) t1 , 
      (SELECT @x:=0) t2;