在使用sql操作数据库时,有时需要复制一行数据创建新的记录。本文将介绍两种常用的sql复制一行的语法: INSERT INTO ... SELECT ... 和 INSERT ... VALUES ... 。
INSERT INTO ... SELECT ...
INSERT INTO ... SELECT ... 语句将从一个表中选择一行或多行数据,并将它们插入到另一个表中。语法如下:
sql
INSERT INTO <目标表>
SELECT <列名列表>
FROM <源表>
WHERE <条件>
例如,要从表 customers 中复制客户 ID 为 1 的行到表 orders 中,可以使用以下语句:
sql
INSERT INTO orders (customer_id, product_id, quantity)
SELECT customer_id, product_id, quantity
FROM customers
WHERE customer_id = 1
INSERT ... VALUES ...
INSERT ... VALUES ... 语句直接插入指定的值到表中。语法如下:
sql
INSERT INTO <目标表> (<列名列表>)
VALUES (<值列表>)
例如,要复制表 customers 中客户 ID 为 1 的行,可以使用以下语句:
sql
INSERT INTO customers (customer_id, name, email)
VALUES (1, 'John Doe', 'john.doe@example.com')
注意
* 在使用 INSERT INTO ... SELECT ... 语句时,目标表必须具有与源表中选择列相同或兼容的数据类型。
* 在使用 INSERT ... VALUES ... 语句时,值列表中的值顺序必须与列名列表中的列顺序相对应。
* 如果目标表中具有唯一约束或主键,则复制的行必须满足这些约束。否则,将引发错误。