有人可以为我解释为什么以下情况不起作用:
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%')
ndc
中的DrugList
列是唯一标识某种药物的主键。由于您需要两件事进行交互,DrugInteractions
表格有两份ndc
;这两个ndc
将是一个复合主键。所以说药物A的ndc为1,药物B的ndc为2,那么DrugInteraction中的行看起来像:
ndc_pk ndc_fk
1 2
有没有办法使用带有两个查询的insert语句填充表,每个列一个,就像我正在尝试的那样?我得到的错误是:
Msg 102,Level 15,State 1,Line 2
附近的语法不正确
','
答案 0 :(得分: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%'
答案 1 :(得分: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%')
)
答案 2 :(得分: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