首页 > 解决方案 > 如何在 SQL 中同时使用 SELECT 和 VALUES 插入多行数据

问题描述

我有两张表,一张是所有者,一张是宠物,所有者持有 OwnerID 自动递增的整数。我需要在我的 Pet 表中选择 OwnerID,并为每个宠物名称/生日包含不同的值。

我试过这个,但它只是为每一行复制了相同的宠物名字/生日。

INSERT INTO  Pet (OwnerID, PetName, DateOfBirth)
SELECT OwnerID, 'Luna', '2013-08-26T12:00:00+00:00'
FROM Owner;

我也试过这个:

INSERT INTO Pet (OwnerID, PetName, DateOfBirth)
VALUES (
(SELECT OwnerID, 'Luna', 2013-02-11 FROM Owner), 
(SELECT OwnerID, 'Wally', 2014-09-28 FROM Owner), 
(SELECT OwnerID, 'Bella', 2019-07-04 FROM Owner), 
(SELECT OwnerID, 'Milo', 2017-03-15 FROM Owner));

但是列数与第 1 行的值不匹配。

那么我如何才能选择 OwnerID 并为每一行创建唯一的 PetName 值呢?

标签: mysqlsubquerymysql-workbenchsql-insert

解决方案


I guess you only want to insert data into the table?

Then you must specify which Owner goes with each pet, and it is as simple as

INSERT INTO Pet (OwnerID, PetName, DateOfBirth)
VALUES (1, 'Luna', '2013-02-11'), 
(4, 'Wally', '2014-09-28'), 
(6, 'Bella', '2019-07-04'), 
(12, 'Milo', '2017-03-15');

Owners must exist prior to that of course.


推荐阅读