SQL Ms Access将select嵌入到INSERT语句中以获取某些特定值

时间:2013-10-24 12:04:22

标签: sql ms-access ms-access-2007 sql-insert

我有两张桌子:艺术家和作品。

艺术家是画家与ArtistID,FirstName和LastName的关系。

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

现在,我的艺术家关系有数据,我现在正在向Work表插入值。 WorkID是一个计数器,所以没有问题。我想使用的东西

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

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

3 个答案:

答案 0 :(得分:5)

试试这个

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

答案 1 :(得分:2)

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

在这种情况下,Apostolos的方法会在[Work]中插入多行,而HansUp采用的方法只会根据DLookup()返回的[ArtistID]在[Work]中插入一行(这将是是它在[Artist]表中找到的第一个匹配项。)

您必须确定哪个答案最适合您的目的。一定要接受这个答案,但也要记住,你仍然可以支持任何你认为有帮助的答案。

答案 2 :(得分:1)

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

INSERT INTO Work (Title, ArtistID)
VALUES('Toledo', DLookup("ArtistID", "Artist", "FirstName='Joan'"));