这听起来很简单,但我就是想不通。
我有一个表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
想法:
- 选择
COUNT(*)
(即每个GROUP
ing 中的行数)和Orders
中的所有字段(*
) GROUP
telephone_number
1 后八位
- 可选地,
ORDER
按GROUP
中的行数降序。
1) 如果您打算经常执行此类查询,则可能需要电话号码最后部分的某种索引。如何最好地实现这一点取决于字段中存储的具体值。
关于MySQL COUNT、GROUP BY 和 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7554639/