-- ========================================
-- 修复订单表中的无效地址数据
-- 问题：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`;
