48 lines
1.4 KiB
MySQL
48 lines
1.4 KiB
MySQL
|
|
-- ========================================
|
|||
|
|
-- 修复订单表中的无效地址数据
|
|||
|
|
-- 问题:service_address字段存储了数字(如:453535)
|
|||
|
|
-- 解决:将无效地址更新为NULL,让前端使用逆地理编码
|
|||
|
|
-- ========================================
|
|||
|
|
|
|||
|
|
-- 1. 查看当前有多少订单的地址是纯数字
|
|||
|
|
SELECT
|
|||
|
|
COUNT(*) as total_invalid_address,
|
|||
|
|
GROUP_CONCAT(DISTINCT service_address) as invalid_addresses
|
|||
|
|
FROM `order`
|
|||
|
|
WHERE service_address REGEXP '^[0-9]+$';
|
|||
|
|
|
|||
|
|
-- 2. 查看这些订单的详细信息
|
|||
|
|
SELECT
|
|||
|
|
id,
|
|||
|
|
order_no,
|
|||
|
|
student_name,
|
|||
|
|
service_address,
|
|||
|
|
service_date,
|
|||
|
|
status
|
|||
|
|
FROM `order`
|
|||
|
|
WHERE service_address REGEXP '^[0-9]+$'
|
|||
|
|
ORDER BY id DESC
|
|||
|
|
LIMIT 20;
|
|||
|
|
|
|||
|
|
-- 3. 将纯数字的地址更新为NULL
|
|||
|
|
-- 注意:执行前请先备份数据!
|
|||
|
|
UPDATE `order`
|
|||
|
|
SET service_address = NULL
|
|||
|
|
WHERE service_address REGEXP '^[0-9]+$';
|
|||
|
|
|
|||
|
|
-- 4. 验证修复结果
|
|||
|
|
SELECT
|
|||
|
|
COUNT(*) as total_null_address
|
|||
|
|
FROM `order`
|
|||
|
|
WHERE service_address IS NULL OR service_address = '';
|
|||
|
|
|
|||
|
|
-- ========================================
|
|||
|
|
-- 说明:
|
|||
|
|
-- 1. 地址为NULL时,前端会自动使用逆地理编码获取真实地址
|
|||
|
|
-- 2. 如果需要保留原始数据,可以先创建备份表
|
|||
|
|
-- 3. 建议在订单创建时就使用逆地理编码获取正确地址
|
|||
|
|
-- ========================================
|
|||
|
|
|
|||
|
|
-- 可选:创建备份表
|
|||
|
|
-- CREATE TABLE `order_backup_20260126` AS SELECT * FROM `order`;
|