MySQL按多列排序(id和整数)
我有一个根据id(101、102、201、301等)构造的表,第一个数字是导航列,还有一个位置值(1、2、3和以上),用于知道导航中的项目的位置 以下是事后来看表格的结构:MySQL按多列排序(id和整数),mysql,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
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、位置排序的订单;但事实并非如此
我尝试了Group By和Order By的组合,然后是Union和字段集值,但据我所知,没有一种组合起作用
以下是我遇到的一些问题,但却没有得到我想要的:
SELECT t.* FROM (SELECT * FROM table_name ORDER BY placement) t GROUP BY t.id
及
我也做了一个连接,但我记不起查询了
谢谢您的帮助。听起来您想先按id的第一位数字下单,然后按位置下单:
SELECT *, (id DIV 100) AS id_first_digit FROM t ORDER BY id_first_digit, placement;
您可能需要根据您的id格式修改
id\u first\u digit
的表达式(例如,如果它可以是四位数)。您希望它如何排序?要先导航,再定位,再识别吗?只需使用SELECT*from table_名称顺序按navid、placement、id(顺便说一句,在您的数据中,只有navid、placement…)即可。navid是不相关的,因为id起作用,但在我的项目中,我必须按数字进行navid。无论如何,为了更清楚的目的,我会把它去掉。我想要的是按位置然后id排序,但对我来说效果不太好。它有顺序排列的位置值,但ID不是。希望我足够清楚。是的,它起作用了。ID是一个int(5)
SELECT *, (id DIV 100) AS id_first_digit FROM t ORDER BY id_first_digit, placement;