這聽起來很簡單,但我無法弄清楚。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