MySQL SELECT INTO 语法
在MySQL中,我们可以使用SELECT INTO语句将查询的结果集插入到新的表中,或者将查询的结果存储在一个变量中。这个功能非常方便,在某些情况下可以大大简化我们的SQL语句。
语法
SELECT column1, column2, ...
INTO new_table [IN external_db_name]
FROM old_table
WHERE condition;
参数解释
column1, column2, ...
: 要选择的列的列表。new_table
: 要将结果插入的目标表。external_db_name
: 可选参数,指定表所在的外部数据库名称。old_table
: 要从中选择数据的表。condition
: 用于筛选要选择的数据的条件。
实例
将查询结果插入到新表中
假设我们有一个名为students
的表,表中存储了学生的信息,包括姓名、年龄和成绩。现在我们想创建一个新的表excellent_students
,将成绩大于等于90分的学生信息插入到这个表中。
CREATE TABLE excellent_students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT,
grade INT
);
SELECT name, age, grade
INTO excellent_students
FROM students
WHERE grade >= 90;
以上SQL语句将会执行一个SELECT查询,选择成绩大于等于90分的学生信息,并将结果插入到excellent_students
表中。
将查询结果存储在变量中
除了将结果插入到新表中,我们还可以将查询的结果存储在变量中。例如,我们想统计students
表中成绩小于60分的学生数量。
DECLARE num_students INT;
SELECT COUNT(*)
INTO num_students
FROM students
WHERE grade < 60;
SELECT num_students;
在以上示例中,我们首先创建了一个INT类型的变量num_students
,然后执行一个SELECT查询,将结果存储在这个变量中。最后,我们可以通过查询这个变量来获取统计结果。
注意事项
- 使用SELECT INTO语句时,目标表必须先不存在,否则会报错。
- 如果想在同一个库中复制表,只能先创建目标表,再使用INSERT INTO … SELECT … 语句。
总的来说,SELECT INTO语句是一个非常有用的特性,可以帮助我们更方便地处理查询结果。当我们需要将查询结果插入到新表中或者将结果存储在变量中时,SELECT INTO语句可以大大简化我们的SQL语句,提高效率。