-- prc_order_bill.refund_status SET NAMES utf8mb4; SET @col := ( SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'prc_order_bill' AND COLUMN_NAME = 'refund_status' LIMIT 1 ); SET @sql := IF( @col IS NULL, 'ALTER TABLE prc_order_bill ADD COLUMN refund_status varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''NONE'' COMMENT ''退费状态:NONE未退费/REFUNDED已退费'' AFTER credit_arrears_status, ADD KEY idx_order_bill_refund_status (refund_status)', 'SELECT 1' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; UPDATE prc_order_bill b SET b.refund_status = 'REFUNDED' WHERE EXISTS ( SELECT 1 FROM prc_income_bill_fee f WHERE f.bill_id = b.bill_id AND UPPER(f.fee_type) = 'REFUND' ) AND (b.refund_status IS NULL OR b.refund_status <> 'REFUNDED'); UPDATE prc_order_bill b SET b.refund_status = 'NONE' WHERE (b.refund_status IS NULL OR b.refund_status = '') AND NOT EXISTS ( SELECT 1 FROM prc_income_bill_fee f WHERE f.bill_id = b.bill_id AND UPPER(f.fee_type) = 'REFUND' );