MySQL 或 Laravel Eloquent - 排序依据

标签 mysql sql laravel

我需要按年份(从最新到最旧)对记录进行排序,其中列的内容如下所示:

id | year
-------------
1  | 1Q 2000
2  | 4Q 2000
3  | 3Q 1999
4  | 1Q 2002

1Q、2Q、3Q、4Q 表示季度。我需要得到结果:

id | year
-------------
4  | 1Q 2002
2  | 4Q 2000 (4th quarter of 2000 is newest than 1 quarter of 2000)
1  | 1Q 2000
3  | 3Q 1999
  1. 在 MySQL 中可以吗?

  2. 在 Laravel Eloquent ->orderBy() 中是否可行?

谢谢, 亲切的问候, 保罗

最佳答案

使用 MySQL,您可以使用 RIGHT 首先获取年份部分,然后您需要再次按 year 列进行排序以获得正确的排序对于同一年的多个季度:

SELECT *
FROM your_tab
ORDER BY RIGHT(year, 4) DESC, year DESC   -- LEFT(year, 1) DESC

SqlFiddleDemo

关于MySQL 或 Laravel Eloquent - 排序依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958369/

相关文章:

php - 在 Laravel eloquent 数据库播种机/工厂中播种关系数据 - 类型错误 - Arg 1 应该是 Eloquent\Model - 给定集合

c# - 改进 Entity Framework 中的嵌套查询

javascript - Ajax 推进

python - 莫名其妙的python mysql连接问题

php - magento 1.5 产品评论存储在哪里?

mysql - 我应该将子帖子标记为删除还是主帖子就足够了?

mysql - 不同表之间的条件连接以组合不同的列

sql - 删除行后如何对 id 列重新排序(不是自动递增)

php - 将 MySQL 查询转换为 Laravel Eloquent

php - Laravel 嵌套所有 json 响应