如何仅用MySQL遍历学生表按规则将数据插入日志表
纯MySQL实现学生成绩数据插入日志表方案
现有两张数据表:
- 学生详细信息表:

- 日志存储表:

实现要求
仅使用MySQL语法完成数据转换插入,不依赖外部脚本,转换规则如下:
- 排除当日缺席的学生Shaun和Mark,这两类数据不插入日志表
- 日志字段内容格式固定为
{姓名} scored {分数} marks,不可省略末尾的marks单位
实现代码
假设学生表名为students,包含姓名字段name、分数字段score;日志表名为exam_logs,日志内容字段为log_content,执行以下SQL语句即可完成需求:
INSERT INTO exam_logs (log_content) SELECT CONCAT(name, ' scored ', score, ' marks') FROM students WHERE name NOT IN ('Shaun', 'Mark');
逻辑说明
- 直接使用MySQL原生的
INSERT INTO ... SELECT语法即可完成批量数据转换插入,不需要额外遍历逻辑,执行效率高 - 用
CONCAT字符串拼接函数生成符合格式要求的日志内容,严格匹配规则的格式要求 - WHERE条件直接过滤掉指定的两名缺席学生,符合业务规则
如果实际业务中的表名、字段名和上述假设不同,直接替换语句中对应的表名、字段名即可正常执行。
内容的提问来源于stack exchange,提问作者Missing Semicolon
相关产品推荐
相关产品推荐

