这听起来很简单,但我无法弄清楚。Mysql COUNT,GROUP BY和ORDER BY
我有一个表orders
(id
,username
,telephone_number
)。
我想获得通过比较telephone_number
中的最后8个号码来自一位用户的订单数量。
我试过使用SUBSTR(telephone_number, -8)
,我已经搜索了很多实验,但仍然无法实现。
有什么建议吗?
这听起来很简单,但我无法弄清楚。Mysql COUNT,GROUP BY和ORDER BY
我有一个表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
行荷兰国际集团的数),最后从Orders
(*
)GROUP
和所有领域telephone_number
ORDER
按GROUP
中的行数递减。1)如果您打算经常做这种类型的查询,对电话号码的最后一部分某种指数的可能是可取的。如何最好地实现这一点取决于现场存储的具体数值。
//内存密集。
SELECT COUNT(*) FROM `orders` WHERE REGEXP `telephone_number` = '(.*?)12345678'
OR
//相同,但更好和更快。
SELECT COUNT(*) FROM `orders` WHERE `telephone_number` LIKE '%12345678'
您可以使用以下查询从列值中获取最后8个字符。
选择权(RTRIM(将First_Name),8)[ated] [DBO]。[雇员]
谢谢...它工作的完美! – vstruhar