MySQL按多列排序(id和整数)

时间:2014-10-24 00:59:08

标签: mysql

我有一个根据id(101,102,201,301等)构建的表,其中第一个数字是导航列,并且具有位置值(1,2,3和更高)知道导航中的项目在哪里。

以下是表格在后视图中的结构:

id   title   placement
101   abc      3
102   def      1
103   ghi      2
201   jkl      2
202   mno      3
203   pqr      1
301   stu      2
302   vwx      1

我希望表格结构如下:

id   title   placement
102   def      1    
103   ghi      2
101   abc      3
203   pqr      1
201   jkl      2
202   mno      3
302   vwx      1
301   stu      2

首先注意展示位置是asc,然后是id。

我起初认为这是一个简单的id,placement;但事实并非如此。

我已经尝试了分组依据和分数依据的两种组合,然后是联盟和字段设置值,但没有一种是我知道的。

以下是我经历的一些问题,没有运气得到我想要的东西:

SELECT t.* FROM (SELECT * FROM table_name ORDER BY placement) t GROUP BY t.id

(SELECT * FROM table_name ORDER BY placement)
UNION
(SELECT * FROM table_name ORDER BY id);

我也加入了联系,但我无法记住查询。

感谢您提供任何其他帮助。

1 个答案:

答案 0 :(得分:1)

听起来你想首先按id的第一个数字排序,然后放置:

SELECT *, (id DIV 100) AS id_first_digit FROM t ORDER BY id_first_digit, placement;

您可能希望修改id_first_digit的表达式,具体取决于您的ID格式(例如,如果它可以是四位数字)。