Mysql COUNT、GROUP BY 和 ORDER BY

vst*_*har 1 mysql group-by count sql-order-by substr

这听起来很简单,但我就是想不通。

我有一张桌子orders( id, username, telephone_number)。

我想通过比较过去的8个数字的订单数量从一个用户telephone_number

我尝试使用SUBSTR(telephone_number, -8),我已经搜索并尝试了很多,但我仍然无法让它工作。

有什么建议?

jen*_*ram 5

未经测试:

SELECT
    COUNT(*) AS cnt,
    *
FROM
    Orders
GROUP BY
    SUBSTR(telephone_number, -8)
ORDER BY
    cnt DESC
Run Code Online (Sandbox Code Playgroud)

想法:

  1. 选择COUNT(*)(即每个GROUPing 中的行数)和来自Orders( *) 的所有字段
  2. GROUP1的后八位telephone_number
  3. 可选,ORDERGROUPing 中的行数降序。

1) 如果您打算经常进行此类查询,则可能需要电话号码最后一部分的某种索引。如何最好地实现取决于存储在字段中的具体值。