有人能给我正确的语法,告诉我如何使用子查询插入和更新数据吗?
SELECT PersonID
FROM Authors
WHERE PersonID IN (select personID
from person
where last_name = 'Smith' AND first_name = 'Barry'
);
并更新符合此示例人员标准的某些列。
答案 0 :(得分:1)
Update Authors
set Field1='x', Field2='Y', Field3='Z'
FROM Authors
WHERE PersonID IN (select personID
from person
where last_name = 'Smith' AND first_name = 'Barry'
);
答案 1 :(得分:1)
关于插入,我不是100%清楚你要插入什么表。如果你想把25和Y放在作者表上的费用和已发布的列中,那么它就是一个更新,而不是插入,就像madtrubocow所做的那样,尽管我会这样做:
UPDATE a
SET Fee=25,Published='Y'
FROM
Authors a
WHERE EXISTS
(SELECT 1 FROM Person p WHERE a.PersonID=p.PersonID
AND p.last_name = 'Smith' AND p.first_name = 'Barry')
如果要将一行插入到具有AuthorID,Fee和Published列的其他表中,它将是这样的:
INSERT INTO NewTable(AuthorID,Fee,Published)
SELECT AuthorID,25,'Y'
FROM Authors a
WHERE EXISTS
(SELECT 1 FROM Person p WHERE a.PersonID=p.PersonID
AND p.last_name = 'Smith' AND p.first_name = 'Barry')
我应该注意,如果PersonID是Authors表中的唯一列,并且First和Last Name的组合在Person表上是唯一的,我只会以这种方式编写这些查询。如果数据库没有强制执行其中任何一项,那么您需要考虑如何确保不插入或更新比预期更多的行。
答案 2 :(得分:0)
insert into authors(personID, field1, field2)
select personID, 'data1', 'data2'
from person
where last_name = 'Smith' AND first_name = 'Barry'