MySQL降龙十八掌,第六掌内容:利涉大川之MySQL索引的使用与优化(附含MySQL8.0隐藏索引),了解详情>>
0

我的帖子

个人中心

设置

  发新话题


想在表甲的B列填写表乙的A列,条件:表甲的A列=表乙的B列。




;WITH cte1 AS    --;WITH cte1 AS :公共sql语句
(  select * ,sortid=ROW_NUMBER()OVER(PARTITION BY A ORDER BY GETDATE()) FROM #A  ),
cte2 as
( SELECT *, rowid=ROW_NUMBER()OVER(PARTITION BY B ORDER BY GETDATE()) from #B   )
select cte1.A,CASE WHEN cte1.B='' THEN cte2.A ELSE cte1.B END B,cte2.A,cte2.B FROM cte1
LEFT JOIN cte2 ON cte1.A=cte2.B AND cte1.sortid=cte2.rowid

(刚入坑的菜鸟,若有错勿喷)




row_number()生成编号即可



我的51CTO博客

SQL Server MCITP, MVP, MCT, DBA
引用:
原帖由 yyk7248 于 2018-7-11 23:01 发表
358701

想在表甲的B列填写表乙的A列,条件:表甲的A列=表乙的B列。
严格来说你这个题目有问题,甲的A和乙的B不具有一一对应关系。所以,结果是有不确定解,语句也就不好写。



‹‹ 上一贴:为什么还原SQLServer数据库的状态一直都是正在还原 ...   |   下一贴:请问多表联结成视图,有更优的写法吗? ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com