Sql 插入到具有子查询的表中

Sql 插入到具有子查询的表中,sql,insert,triggers,Sql,Insert,Triggers,我可以在SQL2005中这样做吗 SELECT 'C'+inserted.exhid AS ExhId,inserted.exhname AS ExhName,inserted.exhid AS RefID INTO mytable FROM inserted WHERE inserted.altname IS NOT NULL 如果该表存在,它将不起作用,但如果该表不存在,它将创建该表。如何将其插入到现有表中?要插入到现有表中,请使用insert into而不是'SELECT in

我可以在SQL2005中这样做吗

SELECT 'C'+inserted.exhid AS ExhId,inserted.exhname AS ExhName,inserted.exhid AS RefID INTO mytable FROM inserted 
    WHERE inserted.altname IS NOT NULL

如果该表存在,它将不起作用,但如果该表不存在,它将创建该表。如何将其插入到现有表中?

要插入到现有表中,请使用
insert into
而不是'SELECT into

要插入到现有表中,请使用
insert into
而不是'SELECT into

这样做

INSERT INTO mytable
SELECT 'C'+inserted.exhid AS ExhId,inserted.exhname AS ExhName,
 inserted.exhid AS RefID  FROM inserted 
    WHERE inserted.altname IS NOT NULL
在这种情况下,您也不需要别名

INSERT INTO mytable
SELECT 'C'+inserted.exhid AS ExhId,inserted.exhname AS ExhName,
 inserted.exhid AS RefID  FROM inserted 
    WHERE inserted.altname IS NOT NULL

在这种情况下,您也不需要别名

sqlnemage的答案是正确的。但要补充一点,我建议在表结构/列顺序发生变化时,显式列出要插入的列是一种好的做法,这样可以更好地保持进程的一致性

INSERT INTO mytable ( 
ExhId, 
ExhName, 
RefID) 
SELECT 'C'+inserted.exhid,
inserted.exhname, 
inserted.exhid 
FROM inserted 
WHERE inserted.altname IS NOT NULL

SqlMenage的回答是正确的。但要补充一点,我建议在表结构/列顺序发生变化时,显式列出要插入的列是一种好的做法,这样可以更好地保持进程的一致性

INSERT INTO mytable ( 
ExhId, 
ExhName, 
RefID) 
SELECT 'C'+inserted.exhid,
inserted.exhname, 
inserted.exhid 
FROM inserted 
WHERE inserted.altname IS NOT NULL