【发布时间】:2020-04-06 19:02:49
【问题描述】:
我有两张表,一张是 Owner,一张是 Pet,而 Owner 持有 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 值呢?
【问题讨论】:
-
您想为每个主人取一个不同的宠物名吗?
-
这些选择都拉回了整个所有者表。您需要在这些选择上添加一个 where 子句才能使其有意义。它怎么知道哪个宠物和哪个主人一起去?
-
@JohnFx 如果我单独列出这些值,如何从 Owner 表中选择 OwnerID?
-
@Kevin 没错!每个 OwnerID 都有自己唯一的宠物名称
-
为两个表提供
CREATE TABLE脚本,为Owner中已经存在的数据提供INSERT INTO脚本,以及必须插入Pet的示例数据数组。不要忘记解释有关所有者是每只特定宠物的所有者的信息。
标签: mysql subquery mysql-workbench sql-insert