SQLite INSERT 语句中的子查询
SQLite 子查询可以与 INSERT 语句 一起使用,将子查询返回的数据插入到另一个表中
这种使用方式一般用于将旧表数据导入新表当中
语法如下
INSERT INTO table_name [ (column1 [, column2 ]) ] SELECT [ *|column1 [, column2 ] FROM table1 [, table2 ] [ WHERE VALUE OPERATOR ]
例如语句
INSERT INTO tbl_employee_new SELECT * FROM tbl_employee;
用于旧表 tbl_employee
中的数据导入到新表 tbl_employee_new
当中
范例
先运行下面的 SQL 语句创建测试数据
有两张表,一张是旧职工表,有数据,一张是新职工表,没数据,多加一个婚否的字段
DROP TABLE tbl_employee; DROP TABLE tbl_employee_new; CREATE TABLE tbl_employee ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name CHAR(64) NOT NULL, age INTEGER NOT NULL, city CHAR(64), salary REAL ); CREATE TABLE tbl_employee_new ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name CHAR(64) NOT NULL, age INTEGER NOT NULL, city CHAR(64), married CHAR(1) NOT NULL DEFAULT 'Y', salary REAL ); INSERT INTO tbl_employee (name,age,city,salary) VALUES ('张三', 25, 'pek', 102400.00 ), ('李四', 18, 'shanghai', 88888.00 ), ('王五', 22, 'hangzhou', 22000.00 ), ('孙六', 32, 'pek', 32000.00 ), ('钱七', 25, 'shanghai', 25000.00 ), ('赵二', 45, 'pek', 45800.00 ), ('冯九', 37, 'chengdu', 15000.00 );
首先我们使用下面的语句将旧表 tbl_employee
中的数据导入到新表 tbl_employee_new
当中
INSERT INTO tbl_employee_new(id,name,age,city,salary) SELECT * FROM tbl_employee;
我们指定了字段,这样没指定的字段就会使用默认值
然后使用 SELECT * FROM tbl_employee_new;
语句看一下新表里的数据,输出如下
id name age city married salary ------- -------- ------- ---------- -------- --------- 1 张三 25 pek Y 102400.0 2 李四 18 shanghai Y 88888.0 3 王五 22 hangzhou Y 22000.0 4 孙六 32 pek Y 32000.0 5 钱七 25 shanghai Y 25000.0 6 赵二 45 pek Y 45800.0 7 冯九 37 chengdu Y 15000.0