全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5978 7
2014-04-17
悬赏 95 个论坛币 未解决
请看下面这个程序;
我用sql更新了a表的2列数。

但这个写法的问题在于:两个表重新join了2次(更新b列join了一次,更新c列又join了一次),大大降低了程序的效率,
谁知道有什么好的写法,能一次更新多列数据进去?
(请注意有个要求,因为我的A表是个很大的主表,都做好了索引,所以A表不能动,一定要保留)
data a;
input a b c;
cards;
1 2 3
2 3 4
4 5 6
;
run;
data b;
input x y z;
cards;
1 55 55
2 66 88
;
run;
proc sql;
        update a
        set b=(select y from b where b.x=a.a),
            c=(select z from b where b.x=a.a)
        ;quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-4-17 20:01:21
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-18 20:23:04
zhengbo8 发表于 2014-4-17 20:01
你好 你的方法确实是个好方法,但是还有个问题

因为我的主表是个很大的表,是带有索引的,
用data步 update以后发现索引没有了

看看能不能在sql的环境里解决呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-18 20:52:54
sun5008 发表于 2014-4-18 20:23
你好 你的方法确实是个好方法,但是还有个问题

因为我的主表是个很大的表,是带有索引的,
方法一:Merge。
复制代码
方法二:SQL。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-21 08:42:25
zhengbo8 发表于 2014-4-18 20:52
方法一:Merge。方法二:SQL。
你好  你的程序写法我还是用不了,

因为A是我的一个主表,索引什么都做好了,所以不能动,不能用Create的步骤来做,
只能在原表的基础上Update,用Merge也会破坏主表的索引,而且Merge之前的sort步,对于很大数据量的主表来说是承受不起的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-21 09:11:51
sun5008 发表于 2014-4-21 08:42
你好  你的程序写法我还是用不了,

因为A是我的一个主表,索引什么都做好了,所以不能动,不能用Creat ...
方法二呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群