收录日期:2018/09/20 15:44:19 时间:2016/05/23 01:20:57 标签:基础类
table1内容如下:(AAA为主键)
AAA,   CCC,    DDD
1003   M003    50
1002   M002    70

table2的內容如下: (AAA+BBB为主键)
AAA,   BBB,  CCC,    DDD
1001   T01    M001    89
1002   T01    M002    70
1001   T02    M001    92
1001   T03    M001    75
1003   T01    M003    50
1002   T03    M002    70
1004   T01    M004    65

我想将table2中的如下記錄新增到table1表中,
(条件就是table2中有AAA,而tabel1中没有的AAA记录,)
AAA,   CCC,    CCC
1001   M001    89
1004   M004    65

請問這個SQL語句如何寫?(关于insert...select...语句的使用)

使用:insert table1
select distinct AAA,CCC,DDD 
from table2 
where aaa not in (select aaa from table1)
返回值如下:
AAA,   BBB,  CCC,    DDD
1001   T01    M001    89
1001   T02    M001    92
1001   T03    M001    75
1004   T01    M004    65

请问如何返回要求的值?
正确的结果及应该为:
AAA,   CCC,    DDD
1001   M001    89
1001   M001    92
1001   M001    75
1004   M004    65
你要记住distinct是和select结合在一起的,而不是和AAA结合在一起的
正是因为DDD字段89,92,75在三条记录不同,所以这三条记录就是不同的
所以,按照你的要求,你没写错.

你这样的问题是不可以用语句写好的,因为你只列出着几条数据,要是数据多的话会因为主键重复而不能在表AAA中插入数据,就你现在也同样存在这样的问题,除非你不一部分数据
你要确定CCC、DDD字段怎么取数据才行。

感觉你的表结构设计不合理。
insert table1
select AAA,CCC,DDD 
from table2 
where aaa not in (select distinct aaa from table1)