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

标签 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

注意位置是如何先升序,然后是 id。

我一开始以为这只是一个简单的按 id 和布局排序的订单;但事实并非如此。

我尝试过 Group By 和 Order By 的组合,然后是 Union 和 Field 设置值,但据我所知,没有一个有效。

以下是我遇到的一些查询,但没有得到我想要的结果:

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);

我也进行了联接,但我不记得查询了。

感谢您的任何额外帮助。

最佳答案

听起来您想先按 id 的第一位数字排序,然后再按位置排序:

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

您可能需要根据您的 ID 格式(例如,如果它可以是四位数字)修改 id_first_digit 的表达式。

关于MySQL 按多列排序(id 和整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26539909/

相关文章:

mysql - 查询表中的所有数据,仅连接连接表中的最新记录

mysql - sql中不同的外部组

php - 在 TWIG 中使用 PHP 和 Mysql 代码

mysql - 跨多对多关系表的唯一约束

php - Codeigniter 与 xpath 和重复 key 更新

php - Mysql MATCH AGAINST空字段给出所有结果

Mysql:在溢出警告时生成错误

php - 在特定时间范围内按 "some time interval"获取日期组数组

php - Android:如何使用参数从mysql获取数据到sqlite

mysql - 无法删除 mysql 中外键约束引用的父表