A表中需要对应B表中的多条记录的数据的SQL

walkman_22 2012-07-20 05:05:56
表结构如下:
表一
A B C D
123

表二
A1 B1 C1
123 84 100
123 85 200
123 86 300

表一的A字段与表二的A1关联,如果表二的B1中84对应的记录存在,则在表一中的B字段填入100,表二的B1中85对应的记录存在,C中填入200,依次类推

如上述描述的数据
则表一的数据为
A B C D
123 100 200 300

用一条SQL该如何实现?(SQLServer)
不用存储过程之类的。



...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2012-07-20
  • 打赏
  • 举报
回复

create table tab1
(A int, B int, C int, D int)

insert into tab1(A) values(123)

create table tab2
(A1 int, B1 int, C1 int)

insert into tab2
select 123, 84, 100 union all
select 123, 85, 200 union all
select 123, 86, 300


update t1
set t1.B=(select top 1 C1 from tab2 t2 where t2.A1=t1.A and t2.B1=84),
t1.C=(select top 1 C1 from tab2 t2 where t2.A1=t1.A and t2.B1=85),
t1.D=(select top 1 C1 from tab2 t2 where t2.A1=t1.A and t2.B1=86)
from tab1 t1

select * from tab1

/*
A B C D
----------- ----------- ----------- -----------
123 100 200 300

(1 row(s) affected)
*/
walkman_22 2012-07-20
  • 打赏
  • 举报
回复
虽然不是要这样的结果,但是提供了解决问题的思路。谢谢。
结贴给分。
發糞塗牆 2012-07-20
  • 打赏
  • 举报
回复

update A
SET B=B1,C=C1
FROM 表一 as A inner join 表二 as B on A.A=B.A1

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧