Files
plates-server/sql-scripts/add-member-number-migration.sql
2025-09-26 08:48:22 +08:00

54 lines
1.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 会员编号字段迁移脚本
-- 执行日期: 2025-09-26
-- 描述: 为用户表添加会员编号字段按照创建时间从1开始递增编号
-- Step 1: 添加会员编号字段
ALTER TABLE `t_users`
ADD COLUMN `member_number` INT NULL COMMENT '会员编号(按注册时间递增)' AFTER `gender`;
-- Step 2: 创建索引以提高查询性能
CREATE INDEX `idx_member_number` ON `t_users` (`member_number`);
-- Step 3: 为现有用户按照创建时间分配会员编号从1开始递增
SET @row_number = 0;
UPDATE `t_users`
SET `member_number` = (@row_number := @row_number + 1)
WHERE `member_number` IS NULL
ORDER BY `created_at` ASC;
-- Step 4: 验证更新结果
SELECT
COUNT(*) as total_users,
MIN(member_number) as min_member_number,
MAX(member_number) as max_member_number,
COUNT(DISTINCT member_number) as unique_member_numbers
FROM `t_users`
WHERE `member_number` IS NOT NULL;
-- Step 5: 显示前10个用户的会员编号分配情况
SELECT
`id`,
`name`,
`member_number`,
`created_at`,
`is_guest`
FROM `t_users`
WHERE `member_number` IS NOT NULL
ORDER BY `member_number` ASC
LIMIT 10;
-- Step 6: 检查是否有重复的会员编号应该为0
SELECT
member_number,
COUNT(*) as count
FROM `t_users`
WHERE `member_number` IS NOT NULL
GROUP BY `member_number`
HAVING COUNT(*) > 1;
-- 注意事项:
-- 1. 此脚本会为所有现有用户分配会员编号,按照创建时间排序
-- 2. 会员编号从1开始递增
-- 3. 包含游客用户也会分配编号
-- 4. 如果只希望为正式用户(非游客)分配编号,请在更新语句中添加条件: WHERE `member_number` IS NULL AND `is_guest` = 0
-- 5. 执行前请备份数据库