我有一个根据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);
我也加入了联系,但我无法记住查询。
感谢您提供任何其他帮助。
答案 0 :(得分:1)
听起来你想首先按id的第一个数字排序,然后放置:
SELECT *, (id DIV 100) AS id_first_digit FROM t ORDER BY id_first_digit, placement;
您可能希望修改id_first_digit
的表达式,具体取决于您的ID格式(例如,如果它可以是四位数字)。