
[英]Complex sql query: grab multiple IDs from tableOne based on field from tableTwo, update into tableTwo
[英]SQL query for complex IDs
我有一个要通过ID缩写的表。我使用的ID有点复杂。 ID的形式为
EM_ {AZ} {} INT
每个Id以EM_开头,后跟一个字符形式AZ和每个字母一个递增的INT。 我想通过ID来缩短表格。当我这样做时,我得到以下结果。 作为示例,该表的假想快照形式为
ID |Title|Year
--------------------
EM_A1 | |
EM_A10 | |
EM_A2 | |
***
EM_A9 | |
***
EM_C1 | |
EM_C10 | |
EM_C11 | |
EM_C2 | |
EM_C20 | |
***
EM_C9 | |
***
我想创建一个查询,该查询返回以ID正确排序的短表。
ID |Title|Year
--------------------
EM_A1 | |
EM_A2 | |
***
EM_A9 | |
EM_A10 | |
***
EM_C1 | |
EM_C2 | |
***
EM_C9 | |
EM_C10 | |
EM_C11 | |
***
EM_C20 | |
***
任何帮助都将非常有用。
您可以使用substring
按字母顺序排列,然后按数字排列。
select * from tablename
order by substring(id, 4, 1), cast(substring(id, 5) as unsigned)
子排序的第一部分是前缀EX_ ?,所以我得到了LEFT 4个字符。 次要排序是它之后的值,因此我从第5个字符开始获取该值。
select *
from
yourtable
order by
left( id, 4 ),
abs( substr( id, 5 ));
一个简单的查询就可以了,试试这个>
select * from tablename ORDER By ID ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.