使用MySQL划分收货地址后将数据添加到原表中

使用MySQL划分收货地址后,将数据添加到原表中公分三步:

1、创建临时表

2、确认原表中是否有所对应的列(省、市)

3、执行更新操作

4、清理临时表

sql 复制代码
# 创建临时表
CREATE TABLE temp_address AS
SELECT 
    distinct `收货地址`,
    CASE 
        WHEN 收货地址 LIKE '北京市%' THEN '北京市'
        WHEN 收货地址 LIKE '天津市%' THEN '天津市'
        WHEN 收货地址 LIKE '重庆市%' THEN '重庆市'
        WHEN 收货地址 LIKE '上海市%' THEN '上海市'
        WHEN 收货地址 LIKE '宁夏回族自治区%' THEN '宁夏回族自治区'
        WHEN 收货地址 LIKE '内蒙古自治区%' THEN '内蒙古自治区'
        WHEN 收货地址 LIKE '广西壮族自治区%' THEN '广西壮族自治区'
        WHEN 收货地址 LIKE '西藏自治区%' THEN '西藏自治区'
        WHEN 收货地址 LIKE '新疆维吾尔自治区%' THEN '新疆维吾尔自治区'
        ELSE SUBSTRING_INDEX(收货地址, '省', 1)
    END AS `省`,
    CASE 
        WHEN 收货地址 LIKE '北京市%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        WHEN 收货地址 LIKE '天津市%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        WHEN 收货地址 LIKE '重庆市%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        WHEN 收货地址 LIKE '上海市%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        WHEN 收货地址 LIKE '内蒙古自治区%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        WHEN 收货地址 LIKE '广西壮族自治区%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        WHEN 收货地址 LIKE '西藏自治区%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        WHEN 收货地址 LIKE '新疆维吾尔自治区%' THEN SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
        ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(收货地址, '市', 1), '省', -1)
    END AS `市`
FROM 
    all_user_tb
sql 复制代码
# 新增列

ALTER TABLE all_user_tb ADD COLUMN 省 VARCHAR(255);
ALTER TABLE all_user_tb ADD COLUMN 市 VARCHAR(255);
sql 复制代码
# 更新原表
UPDATE all_user_tb AS a
JOIN temp_address AS t ON a.收货地址 = t.收货地址
SET a.省 = t.省, a.市 = t.市;
sql 复制代码
# 删除临时表
DROP TABLE temp_address;
相关推荐
AAA修煤气灶刘哥21 小时前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
程序新视界1 天前
学习MySQL绕不开的两个基础概念:聚集索引与非聚集索引
mysql
RestCloud1 天前
跨境数据传输:ETL如何处理时区与日期格式差异
mysql·api
RestCloud1 天前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
得物技术1 天前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
xiaok1 天前
mysql中怎么创建一个可控权限数据库账号密码给到开发者
mysql
可涵不会debug1 天前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库
ByteBlossom1 天前
MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
数据库·mysql·面试
玉衡子1 天前
九、MySQL配置参数优化总结
java·mysql
麦兜*1 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud