2013-11-26 139 views
0

有人可以給我正確的語法,我怎樣才能插入和更新數據使用子查詢?插入SQL與子查詢

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

謝謝,提供了一個如何使用插入操作的例子嗎?例如,將值25和Y插入到Fee列中並使用我提供的子查詢發佈(查找某個人的作者ID)? – krosiris

+0

這是你的意思嗎? 插入作者(費用,已發佈)從作者中選擇25,'Y'Where PersonID IN(從人0​​中選擇personID ,其中last_name ='Smith'AND first_name ='Barry' ); – madturbocow

0
insert into authors(personID, field1, field2) 
select personID, 'data1', 'data2' 
from person 
where last_name = 'Smith' AND first_name = 'Barry' 
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,手續費及發佈的列不同的表,這將是這樣的:

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表上是唯一的。如果其中任何一個不是由數據庫強制執行的,則需要考慮如何確保不會插入或更新比您想要的更多的行。