在mysql查询中生成序列号

新手上路,请多包涵

我有一张桌子:student_marks

 marks
-----
  44
  55
  64
  98
  76

预期输出:

 serial_number|marks
--------------------
  1          | 44
  2          | 55
  3          | 64
  4          | 98
  5          | 76

使用 mysql 用户定义的变量,可以使用查询来完成:

  set  @a:=0;select @a:=@a+1 serial_number, marks from student_marks;

有什么方法可以在不使用用户定义变量的情况下在 msyql 中实现这一点?

原文由 sushil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 406
2 个回答

根据您不想使用用户定义变量的原因,以避免进行 2 个查询,一个用于初始化,一个用于使用它,您可以使用以下内容:

 SELECT  @a:=@a+1 serial_number,
        marks
FROM    student_marks,
        (SELECT @a:= 0) AS a;

原文由 GarethD 发布,翻译遵循 CC BY-SA 3.0 许可协议

ALTER TABLE table_name ADD COLUMN sr_no INT UNIQUE NOT NULL AUTO_INCREMENT FIRST;

如果您忘记为序列号创建列,这甚至会编辑您的主表。您还可以使用它来将 sr_no 列添加到两个不同的列并轻松连接它们(或使用它们创建一个新表)。

原文由 Rajeev Rai 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏