【问题标题】:How to create temporary sequence in sql query [duplicate]如何在sql查询中创建临时序列[重复]
【发布时间】:2017-01-28 14:31:52
【问题描述】:

我什至不知道是否可以在 MYSQL sql 查询中创建临时序列。如果可能,请告知如何完成,例如

我有一个名为

的列名

下面的相位和数据

  • A期
  • C期
  • B期
  • D阶段

我想查询出来,根据阶段a、b、c、d创建一个序号1、2、3、4、5...所以查询输出会变成

Seq     Phase
---------------
1       Phase A
2       Phase B
3       Phase C
4       Phase D

【问题讨论】:

  • 您想要完成什么需要临时的 auto_increment 列?
  • 我想查询并根据列名字母顺序创建一个临时序列列
  • 所以列 Phase 包含 A、C、B、D。但是您希望输出为 1,3,2,4?
  • 如果相位值比较少,可以使用IF函数或者CASE语句。如果数量较大,我会使用您将加入的查找表。请参阅stackoverflow.com/questions/5951157/… 等。
  • Close 上显示的那个欺骗目标从OMG Ponies 得到了很好的回答。

标签: mysql sql


【解决方案1】:

不知道我是否正确回答了您的问题。据我了解,您希望为您的结果集动态生成一个序列。如果这不是您所需要的,可以提供更多帮助。

SELECT @seq:=@seq+1 id, column_1, column_2 FROM your_table, (SELECT @seq:=0) a;

【讨论】:

  • 不,这不是他想要的。只是用数字替换字母值。这方面已经有很多例子了。
  • @picmate 这就是我想要的,我认为 topshot 误解了我的意图......但是使用您的查询有一个错误说“错误 1:无法准备语句(1 个无法识别的令牌:“:”)
  • 乐于助人。你是从某种脚本运行它吗?如果是这样,您可以先尝试在 mysql 服务器本身中运行它吗?该查询非常适合我。
  • @picmate 我明天回去工作后试试看效果如何
  • @rookie_coder 所以你的“确切”评论不准确?也许您没有提到 Phase 没有限制值 - 它本身就是一个独特的序列?
猜你喜欢
  • 2013-07-01
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
相关资源
最近更新 更多