sql int转varchar_SQL面试36

博客围绕SQL操作展开,给出class、student_old和student_new三个表的结构,student_old和class表有原始数据。要求用SQL语句将student_old表数据对应插入student_new表,并按规则处理sex和class_id字段,还提及Insert into... Select...、Case... When...和子查询等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

740ca9d2ba01cef76b07163107e62ac4.png

有两个表的表结构如下:

表class(班级):

字段类型备注
SidInt主键
NameVarchar班级名称

表student_old(学生表,旧表):

字段类型备注
SidInt主键
NameVarchar学生姓名
SexInt性别
1:男 2:女
AgeInt年龄
Class_IDInt所属班级ID

表student_new(学生表,新表):

字段类型备注
SidInt主键
NameVarchar学生姓名
Sex_nameVarchar性别名称(男 或 女)
AgeInt年龄
Class_nameVarchar班级名称

student_old表和class表都有原始数据。

21c978087a87e8c2a96bd75ec76b8c5f.png

be3efe907edf8391c50d437c791c481d.png

现在要求通过sql语句,将student_old表中的数据,对应插入到student_new表中,并且将原本sex和class_id字段,通过规则插入到student_new表中。

8aa3bd2286cec5fcb790d221d7eb3d8a.png
创建表
CREATE TABLE `class` (
  `sid` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `class` VALUES ('1', '初一一班');
INSERT INTO `class` VALUES ('2', '初一二班');
INSERT INTO `class` VALUES ('3', '初一三班');
CREATE TABLE `student_new` (
  `sid` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `sex_name` varchar(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `class_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `student_old` VALUES ('1', '黄晓明', '1', '17', '2');
INSERT INTO `student_old` VALUES ('2', '赵丽颖', '2', '21', '1');
CREATE TABLE `student_old` (
  `sid` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `sex` int(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `class_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在要求通过sql语句,将student_old表中的数据,对应插入到student_new表中,并且将原本sex和class_id字段,通过规则插入到student_new表中。
INSERT into student_new
SELECT s.sid,s.`name` ,
(CASE 	WHEN s.sex=1 THEN
		"男"
	ELSE
		"女"
END )sex_name,
s.age,(CASE 	WHEN c.sid=1 THEN
		"初一一班"
		WHEN c.sid=2 THEN
		"初一二班"
	ELSE
		"初一三班"
END ) class_name
FROM  student_old s
LEFT JOIN class c
on c.sid = s.class_id;

c5c465c0428a3da686689c29a4587cd0.png
知识点

1、Insert into ... Select ...

2、Case ... When ...

3、子查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值