4

我有两张桌子:Artist 和 Work。

Artist 是画家与 ArtistID、FirstName 和 LastName 的关系。

作品是他们的绘画与列 WorkID、Title 和 ArtistID 的关系。

现在,我的艺术家关系有数据,我现在正在向工作表插入值。WorkID 是一个计数器,所以没有问题。我想使用一些可以做的事情

INSERT INTO Work (Title, ArtistID)
VALUES('Toledo', SELECT ArtistID FROM Artist WHERE FirstName='Joan');

但它似乎不起作用或接受 Select 语句作为插入的一部分。我应该怎么办?

4

3 回答 3

5

尝试这个

INSERT INTO Work (Title, ArtistID) 
SELECT 'Toledo', ArtistID FROM Artist WHERE FirstName='Joan'
于 2013-10-24T12:06:57.153 回答
2

这是一个有趣的问题,因为 Apostolos 和 HansUp 的答案都有效。但是,如果您有多个名为“Joan”的 [Artist],它们的行为会有所不同。

在这种情况下,Apostolos 的方法将在 [Work] 中插入多行,而 HansUp 采用的方法只会根据返回的 [ArtistID] 在 [Work] 中插入一行DLookup()(这将是它在[艺术家] 表)。

您必须决定哪个答案最适合您的目的。请务必接受该答案,但请记住,您仍然可以对任何您认为有帮助的答案进行投票。

于 2013-10-24T12:42:47.937 回答
1

使用DLookup 函数检索ArtistID要插入的值。请注意此DLookup表达式与您的SELECT陈述之间的相似性...

INSERT INTO Work (Title, ArtistID)
VALUES('Toledo', DLookup("ArtistID", "Artist", "FirstName='Joan'"));
于 2013-10-24T12:17:03.410 回答