首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >复杂ID的SQL查询

复杂ID的SQL查询
EN

Stack Overflow用户
提问于 2015-10-26 17:09:59
回答 3查看 73关注 0票数 0

我有一个表,我想用ID.The ID来缩短它,但我使用的表有点复杂。is的形式是

EM_{A}{INT}

其中,每个Id都以EM_开头,后面跟着一个字符形式an,并对每个字母增加一个INT。我想通过ID.When缩短表,我这样做,我得到了以下结果。例如,表中的假想快照将为

代码语言:javascript
运行
复制
    ID |Title|Year
--------------------
EM_A1  |     |
EM_A10 |     |
EM_A2  |     |
         ***
EM_A9  |     |
         ***    
EM_C1  |     |
EM_C10 |     |
EM_C11 |     |
EM_C2  |     |
EM_C20 |     |
         ***    
EM_C9  |     |
         *** 

我想要创建一个查询,作为一个例子,该查询返回带有正确的按ID排序的表。

代码语言:javascript
运行
复制
    ID |Title|Year
--------------------
EM_A1  |     |
EM_A2  |     |
         ***
EM_A9  |     |
EM_A10 |     |
         ***    
EM_C1  |     |
EM_C2  |     |
         *** 
EM_C9  |     |
EM_C10 |     |
EM_C11 |     |
         ***  
EM_C20 |     |
         ***    

任何帮助都将是非常useful.Thanks的提前。

EN

回答 3

Stack Overflow用户

发布于 2015-10-26 17:13:56

您可以使用substring先按字母排序,然后再按后面的数字排序。

篡改样本数据

代码语言:javascript
运行
复制
select * from tablename
order by substring(id, 4, 1), cast(substring(id, 5) as unsigned)
票数 3
EN

Stack Overflow用户

发布于 2015-10-26 17:35:38

子排序的第一部分是前缀EX_?,所以我得到了4个字符。二次排序是它之后的值,所以我从第五个字符开始得到它的值。

代码语言:javascript
运行
复制
select *
   from 
      yourtable 
   order by 
      left( id, 4 ), 
      abs( substr( id, 5 ));
票数 1
EN

Stack Overflow用户

发布于 2015-10-26 17:40:52

一个简单的查询就可以了,尝试this>

代码语言:javascript
运行
复制
select * from tablename ORDER By ID ASC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33351590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档