2012-04-23 65 views
0

我有一个命名为Table1表如下更新表而不删除先前添加的数据

ID, JobNo, Date, Comments 

我有一个命名为与别名从另一个只读表如下帮助下创建View1查看,

ID, JobNo, StartSeq, EndSeq 

ID是主键。我必须将UPDATE表1与来自View1的列IDJobNo的数据进行比较。

比方说View1有2行,我将INSERT这2行写入Table1。因此,当View1获得其第三行时,如何更新Table1与第三行的信息,而不删除以前存储在表1中的数据。

现在,我有以下查询,但它似乎不工作,因为重复的主键问题。

INSERT INTO Table1(ID, JobNo) 
SELECT View1.ID, View1.JobNo 
FROM View1 

我是一个新手到SQL所以请帮助我走出这个

回答

0

假设你只想要你已经有表1到INSERT新的数据,而不是实际UPDATE数据,那么你应该做的:

INSERT INTO Table1(ID, JobNo) 
SELECT View1.ID, View1.JobNo 
FROM View1 
WHERE View1.ID NOT IN (SELECT ID FROM Table1) 
+0

@ user1345260 - 好的,那你的问题是什么? – Lamak 2012-04-23 12:46:35

+0

工作。但我对此有一个疑问。 假设View1中有两行,我运行了这个查询并将两行插入到Table1中。现在假定第1行已从View1中删除。所以当我们再次运行这个查询时,这是否反映在Table1中? – user1345260 2012-04-23 12:46:45

+0

@ user1345260 - 不,这个特定的查询只在table1上插入数据,没有别的。如果你想拥有与view1完全相同的数据,你将需要一个更复杂的查询(尽管为什么你需要首先使用table1)。如果你需要更多的帮助,你可以问另一个问题,并告诉我们你使用的是什么数据库引擎和版本 – Lamak 2012-04-23 12:52:42