2013-05-02 78 views
1

可能有人闡明我爲什麼下面不工作:使用兩個查詢來填充表的INSERT語句

insert into DrugInteractions(ndc_fk, ndc_pk) 
    (select top 1 ndc from DrugList where drug_name like 'cipro%'), 
    (select top 1 ndc from DrugList where drug_name like 'tizan%') 

DrugListndc是唯一標識某種藥物的主鍵。既然你需要兩件東西來互動DrugInteractions表有兩個副本ndc;這兩個ndc將是一個複合主鍵。所以說藥物A爲1的NDC藥品B具有2的NDC,然後在DrugInteraction行看起來像:

ndc_pk ndc_fk 
1  2 

有沒有辦法使用INSERT語句有兩個查詢填充一個表,每一列都有一個像我想要的一樣?我得到的錯誤是:

消息102,級別15,狀態1,行2
附近有語法錯誤 ''

回答

2

您需要使用VALUES把它們結合起來;

insert into DrugInteractions(ndc_fk,ndc_pk) 
VALUES(
    (select top 1 ndc from DrugList where drug_name like 'cipro%'), 
    (select top 1 ndc from DrugList where drug_name like 'tizan%') 
) 

An SQLfiddle to test with

+1

就是這樣。謝謝:) – wootscootinboogie 2013-05-02 18:50:52

2

下面就來運行多個SELECT語句的選擇:

insert into DrugInteractions (ndc_fk, ndc_pk) 
select min(case when drug_name like 'cipro%' then ndc end), 
    min(case when drug_name like 'tizan%' then ndc end) 
from DrugList 

SQL Fiddle Demo

+0

+1 - 這是一個比使用'VALUES'更清潔的方法 – EkoostikMartin 2013-05-02 18:56:21

4
insert into DrugInteractions(ndc_fk, ndc_pk) 
    select top 1 ndc, newid() from DrugList where drug_name like 'cipro%' 
    union 
    select top 1 ndc, newid() from DrugList where drug_name like 'tizan%'