2014-02-10 51 views
3

我正在努力处理这段SQL,想知道是否有人可以帮我解决问题。SQL插入查询

INSERT INTO table_1(
rec_1, 
rec_2, 
rec_3 
) 
VALUES (
val_1, 
val_2, 
val_3 
) 

现在,rec_2和rec_3是清晰的,并且具有绝对值。 Rec_1充满了来自另一个表的值。现在我想从另一个表中插入这个表中不存在的值。我猜测我应该使用WHERE NOT IN?

因此,这将是这样的:

INSERT INTO table_1(
rec_1, 
rec_2, 
rec_3 
) 
VALUES (
val_1, 
val_2, 
val_3 
) 
WHERE NOT IN (
SELECT rec FROM table_2 
) 

但是...我怎么能插入rec_1这些价值观在我的查询?

+0

'NOT IN'而不是不存在 –

回答

5

如何简单INSERT/SELECT如果rec_2rec_3是绝对值:

INSERT INTO table_1 (rec_1, rec_2, rec_3) 
SELECT val_1, 'val_2', 'val_3' 
FROM other_table 
WHERE val_1 NOT IN (SELECT rec_1 FROM table_1) 
2

试试这个

INSERT INTO table_1(rec_1, rec_2, rec_3) 
SELECT val_1, val_2, val_3 FROM tablename 
WHERE NOT EXISTS (SELECT rec FROM table_2) 
4
INSERT INTO table_1(rec_1, rec_2, rec_3) 
SELECT val_1, val_2, val_3 FROM dual WHERE NOT EXISTS (SELECT rec FROM table_2) 

你可能要检查这个answer为进一步使用

更多详情here

0
 4 ways to insert record 
1--> {Simple Insertion when table column sequence is known} 
     Insert into Table1 
     values(1,2,...) 

    2--> {Simple insertion mention column} 
     Insert into Table1(col2,col4) 
     values(1,2) 

    3--> {bulk insertion when num of selected collumns of a table(#table2) are equal to Insertion table(Table1) } 
     Insert into Table1 {Column sequence} 
     Select * -- column sequence should be same. 
      from #table2 

    4--> {bulk insertion when you want to insert only into desired column of a table(table1)} 
     Insert into Table1 (Column1,Column2 ....Desired Column from Table1) 
     Select Column1,Column2..desired column from #table2 
      from #table2