导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

myperry 2003-12-14 09:33:29
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

请问如何返回要求的值?
...全文
23 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
milesma 2003-12-15
正确的结果及应该为:
AAA, CCC, DDD
1001 M001 89
1001 M001 92
1001 M001 75
1004 M004 65
你要记住distinct是和select结合在一起的,而不是和AAA结合在一起的
正是因为DDD字段89,92,75在三条记录不同,所以这三条记录就是不同的
所以,按照你的要求,你没写错.

回复
kimurakenshin 2003-12-15
insert table1
select AAA,CCC,DDD
from table2
where aaa not in (select distinct aaa from table1)
回复
victorycyz 2003-12-15
你要确定CCC、DDD字段怎么取数据才行。

感觉你的表结构设计不合理。
回复
annealer 2003-12-15
你这样的问题是不可以用语句写好的,因为你只列出着几条数据,要是数据多的话会因为主键重复而不能在表AAA中插入数据,就你现在也同样存在这样的问题,除非你不一部分数据
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告