Mysql 如何在SQL中同时使用SELECT和VALUES插入多行数据

Mysql 如何在SQL中同时使用SELECT和VALUES插入多行数据,mysql,subquery,mysql-workbench,sql-insert,Mysql,Subquery,Mysql Workbench,Sql Insert,我有两个表,一个是Owner,一个是Pet,Owner持有OwnerID自动递增整数。我需要在我的宠物表中选择该所有者ID,并为每个宠物名/生日包含不同的值 我试过了,但它只是在每行复制了相同的宠物名/生日 INSERT INTO Pet (OwnerID, PetName, DateOfBirth) SELECT OwnerID, 'Luna', '2013-08-26T12:00:00+00:00' FROM Owner; 我也试过: INSERT INTO Pet (OwnerID,

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

我试过了,但它只是在每行复制了相同的宠物名/生日

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值呢?

我猜您只想将数据插入表中

然后你必须指定每只宠物的主人,这很简单

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');

当然,所有者必须在此之前存在。

您希望每个所有者有一个不同的宠物名吗?这些选择都会拉回整个所有者表。您需要在这些选择上使用where子句,这样才有意义。它怎么知道哪个宠物和哪个主人在一起?@JohnFx如果我单独列出这些值,我如何从所有者表中选择OwnerID?@Kevin!每个OwnerID都有自己独特的Pet名称,为两个表提供创建表脚本,为Owner中已有的数据插入脚本,以及必须插入Pet的示例数据数组。不要忘了解释每只宠物的主人信息的位置。首先,通过类似于在OwnerOwnerName值中插入“John Doe”、“Joanne Doe;”的方式添加主人;。这将触发自动增量。然后,您可以从owner表中手动读取所有者ID,或者使用类似INSERT-INTO-Pet-OwnerID、PetName、DateOfBirth值从所有者选择OwnerID,其中OwnerName='John Doe','Luna','2013-02-11',从所有者选择OwnerID,其中OwnerName='Joanne Doe',Wally',2014-09-28';-只有在所有者表中没有重复的名称时,该选项才起作用。