全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10461 10
2014-03-15
想实现用一个表中的数据去更新另外一个表的数据
proc sql;
update  city_tmp  set a.city_name=b.city_name  from city_tmp as a, industry.cities as b where a.id=b.id;
quit;

log如下:
630  proc sql;
631  update  city_tmp as a   set a.city_name=b.city_name  where a.id=b.id;
                                  -
                                  73
                                  76
ERROR 73-322: 期望“=”

ERROR 76-322: 语法错误

请问我该怎么修改。谢谢大家


二维码

扫码加我 拉你入群

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

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

全部回复
2014-3-16 08:32:35
把as去掉试试。from city_tmp  a, industry.cities  b
二维码

扫码加我 拉你入群

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

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

2014-3-16 09:30:56
alex1122 发表于 2014-3-16 08:32
把as去掉试试。from city_tmp  a, industry.cities  b
谢谢你的建议,但是还是报同样的错误
二维码

扫码加我 拉你入群

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

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

2014-3-16 10:14:30
复制代码
二维码

扫码加我 拉你入群

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

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

2014-3-16 10:59:48
yongyitian 发表于 2014-3-16 10:14
非常感谢!我之前也尝试过类似的sql. 与你的做法不同在于少了后面一个where。我很想知道,后面那个where子句的作用。
proc sql;
    update city_tmp as a
    set city_name=(select city_name
                   from industry.cities as b
                   where a.id = b.id);


二维码

扫码加我 拉你入群

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

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

2014-3-16 11:22:44
星光海浪 发表于 2014-3-16 10:59
非常感谢!我之前也尝试过类似的sql. 与你的做法不同在于少了后面一个where。我很想知道,后面那个where子 ...
第一个where语句 是从update表取数的条件语句。 第二个where语句是限定原表中的那些行需要更新。如果没有第二个where语句。 没有被set变量的其他行的值为缺失值。 试一下就知道了。

基本语法大概是这样的, 其中的new_value用了一个select和where. 

update update_table
   set column = new_value
   where condition (for example: line number);
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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