【问题标题】:resolved - Sort by A...Z,AA [closed]已解决 - 按 A...Z、AA 排序 [关闭]
【发布时间】:2020-02-09 10:47:24
【问题描述】:

我也有类似的情况。尽管进行了许多测试,但我发现与 Haleemur Ali 相同,但我的问题是我需要按降序排序我没有 + 或 -

我发现与这篇文章相同的结果,但我不希望这样 Haleemur Ali answer

...
AAC
AAB
AAA
...
AA
Z
...
B
A

这一系列字母在我的数据库(MariaDB)的一列中找到

我将在我的示例中找到的最后一个值加一我应该找到 AAC +1 = AAD

我使用 PHP 和 Laravel

感谢您的帮助


olivier 让我的请求更优雅,如果有帮助,我会在此处发布

$lastL = \App\Models\MyTable::select('letter')
                              ->whereNotNull('letter')
                              ->orderByRaw("length(letter) DESC, letter DESC")
                              ->first();

if(is_null($lastL->letter)){
    return 'A';
}else{
    $letter = ++$lastL->letter;
    return $letter;
}

【问题讨论】:

  • 我很困惑。您正在引用另一个有多个答案的问题,其中一个已被接受,并说明您有同样的问题。答案中给出的解决方案不会解决您的问题吗?如果不是,请说明如何。因为我不知道你的问题具体是什么。
  • 这将是这个解决方案stackoverflow.com/questions/43681099/… 但在 php 中
  • 这行得通(在一定程度上);它在应用程序代码中必须是相同的逻辑(尽管语法不同)SELECT UNHEX(HEX('AAC')+1);
  • 这能回答你的问题吗? How do I sort a dictionary by value?

标签: php mysql laravel


【解决方案1】:
SELECT * FROM table
ORDER BY LENGTH(value) DESC, value DESC

请参阅 SQL Fiddle here

【讨论】:

  • 非常感谢,我刚刚发现了一个不太优雅的解决方案,受这篇文章的启发 forums.mysql.com/read.php?10,71177,71211 如果它对其他人有帮助,我会在报告下发布修改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 2014-02-09
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多