楼主: 星光海浪
10578 10

SAS中sql update使用的问题 [推广有奖]

  • 0关注
  • 1粉丝

已卖:111份资源

博士生

85%

还不是VIP/贵宾

-

威望
0
论坛币
1409 个
通用积分
5.2340
学术水平
1 点
热心指数
0 点
信用等级
0 点
经验
2023 点
帖子
116
精华
0
在线时间
585 小时
注册时间
2008-10-14
最后登录
2024-5-20

楼主
星光海浪 发表于 2014-3-15 23:06:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想实现用一个表中的数据去更新另外一个表的数据
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: 语法错误

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


二维码

扫码加我 拉你入群

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

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

关键词:update date ATE PDA upd update where

沙发
alex1122 发表于 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
谢谢你的建议,但是还是报同样的错误

板凳
yongyitian 发表于 2014-3-16 10:14:30
  1. /* Try this */

  2. proc sql;
  3.     update city_tmp as a
  4.     set city_name=(select city_name
  5.                    from industry.cities as b
  6.                    where a.id = b.id)
  7.     where a.city_name in (select city_name from industry.cities);
  8. quit;
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
firefox29 + 1 + 1 + 1 不明觉厉
intheangel + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

报纸
星光海浪 发表于 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);


地板
yongyitian 发表于 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);

7
alex1122 发表于 2014-3-17 09:29:09
yongyitian 发表于 2014-3-16 11:22
第一个where语句 是从update表取数的条件语句。 第二个where语句是限定原表中的那些行需要更新。如果没 ...
学习,多谢!

8
sabin 发表于 2017-7-10 02:09:57
很巧妙的代码,值得学习

9
learsaas 发表于 2017-7-10 13:40:40
代码很巧妙,不知道效率怎么样

10
haosongs 发表于 2019-1-22 09:49:43
跑了一个小时都没出结果怎么回事

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 11:44