使用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;