MySQL COUNT、GROUP BY 和 ORDER BY

标签 mysql count group-by sql-order-by substr

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

我有一个表orders (id, username, telephone_number)。

我想通过比较 telephone_number 中的最后 8 个数字来获取一个用户的订单数

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

有什么建议吗?

最佳答案

未经测试:

SELECT
    COUNT(*) AS cnt,
    *
FROM
    Orders
GROUP BY
    SUBSTR(telephone_number, -8)
ORDER BY
    cnt DESC

想法:

  1. 选择 COUNT(*)(即每个 GROUPing 中的行数)和 Orders 中的所有字段(* )
  2. GROUP telephone_number1
  3. 后八位
  4. 可选地,ORDERGROUP 中的行数降序。

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

关于MySQL COUNT、GROUP BY 和 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7554639/

相关文章:

php - PDO PHP 中的日期格式

php - 有没有mysql运算符 `both`

mysql 如何根据列值过滤数据

count - Power BI,DAX —如何根据另一个表中的值对一个表中的行进行计数?

mysql - 返回包含 rows 的行数

mysql - 将 MM-DD-YYYY varchar 转换为日期时间

c# - 我可以在执行存储过程之前获取行数吗?

带有 GROUP BY 子句的 COUNT 的 MySQL SUM

MySQL 按天分组不显示当月的结果

sql - 按奇数结果分组