mysql 從一個表的一個欄位求和,更新到另外一個表及字串擷取、去重、切分
阿新 • • 發佈:2019-02-14
引子
現有一個需求:一個訂單表,求這個訂單表的訂單數,然後根據id關聯更新到另一個表中,下面說說的做法。
解決方法
首先查出都多少條訂單,並去重一下
SELECT
client_id,
COUNT(1) as num
FROM
A
GROUP BY
client_id
然後把兩個表根據id關聯起來
SELECT
A.num,B.client_name
FROM
(
SELECT
client_id,
COUNT (1) as num
FROM
B
GROUP BY
client_id
)AS table1
RIGHT JOIN AS table2 ON table1.client_id = table2.id
ORDER BY table1.num
最後更新表
UPDATE A a1
LEFT JOIN (
SELECT
client_id,
COUNT(1) AS num
FROM
B
GROUP BY
client_id
) AS a2 ON a2.client_id = a1.id
SET a1.month_sale_size = a2.num
WHERE
a1.id = a2.client_id
反思
在完成需求的時候遇到了一些問題,然後也百度了一下,就把這些零碎的東西也貼一下。
1.字串擷取
(1) substring(str,index)當index>0從左邊開始擷取直到結束 當index<0從右邊開始擷取直到結束 當index=0返回空
(2) substring(str,index,len) 擷取str,從index開始,擷取len長度
2.去重
我去重一直用的 group by(),括號裡面填條件,多個條件用and隔開。
3.切分
類似於scala的split運算元
用法:
SELECT SPLIT_STR(string, delimiter, position)
例子:
SELECT SPLIT_STR('a|bb|ccc|dd', '|', 3) as third;