This topic has been archived. It cannot be replied.
-
工作学习 / IT技术讨论 / 紧急sql 求助,数据库更新,table1(t1)和数据库 (t2)有相同的field, 但t1 除了f_id, f1,f2有数据外,其它的field都是空的。现在要求根据f_id 从t2中获取field f3,f4更新t1中相关的f3,f4但是不能改变field f1,f2的值,下面命令为何出错?我用的sql命令
update t1 set t1.f3=t2.f3,t1.f4=t2.f4 where t1.f_id=t2.f_id
总是达不到效果,有什么错误吗?怎么实现比较好?
-dbnewcomer(新手上路);
2003-6-10
{122}
(#1232514@0)
-
try this: update t1 set t1.f3=t2.f3,t1.f4=t2.f4 from t1, t2 where t1.f_id=t2.f_id
-hailstorm(寒冰雨);
2003-6-10
(#1232533@0)
-
我开始就用此语句,提示错误 “syntax error(missing operator) in query expression (t2.comments from t1)"
-dbnewcomer(新手上路);
2003-6-10
(#1232548@0)
-
UPDATE t1 INNER JOIN t2 ON t1.f_id = t2.f_id SET t1.f3 = t2.f3, t1.f4 = t2.f4
-zxcvb(忘记过去不是背叛);
2003-6-10
(#1232534@0)
-
郁闷, 你为什么不try这个?
-zxcvb(忘记过去不是背叛);
2003-6-10
(#1232710@0)
-
thanks. I just tried it, it works. 那么如果我还要从table t3 update 数据到t1, 是不是在上句里再加上join: UPDATE t1 INNER JOIN t2 ON t1.f_id = t2.f_id SET t1.f3 = t2.f3, t1.f4 = t2.f4 JOIN t3 ON 。。。。。。?
-dbnewcomer(新手上路);
2003-6-10
(#1232732@0)
-
你最好分成两部作, 连接关系如果搞不好会出错的
-zxcvb(忘记过去不是背叛);
2003-6-10
(#1232739@0)
-
明白,谢谢。
-dbnewcomer(新手上路);
2003-6-10
(#1232745@0)
-
能问一下,为什么要加 “INNER”吗?
-dbnewcomer(新手上路);
2003-6-10
(#1232758@0)
-
学过集合吗?这inner join就是说找出集合A与B中共同的部分。
-zxcvb(忘记过去不是背叛);
2003-6-11
(#1234291@0)
-
没仔细看,不过少了from 的部分吧? 试试这个: update t1 set t1.f3=t2.f3,t1.f4=t2.f4 from t1,t2 where t1.f_id=t2.f_id
-luoboyang(萝卜秧);
2003-6-10
(#1232545@0)
-
我原来就是如此用: update t1 set t1.comments = t2.comments from t1, t2 where t1.pid=t2.pid 但是错误见 #1232548 ,不知是什么问题?去掉from t1,t2 又不工作。
-dbnewcomer(新手上路);
2003-6-10
(#1232553@0)
-
try this: update t1 set t1.comments = (select t2.comments from t1, t2 where t1.pid=t2.pid )
-xhis(枫下恩仇#13 xhis);
2003-6-10
(#1232665@0)
-
语法倒是没错误了,执行时显示“! operation must use an updateable query" 这是什么意思?
-dbnewcomer(新手上路);
2003-6-10
(#1232703@0)
-
the subquery inside ( ) will return multi rows, it's not correct
-wander2001(猫行天下);
2003-6-10
(#1232715@0)
-
ok.
-dbnewcomer(新手上路);
2003-6-10
(#1232737@0)
-
try this, I'm sure it works: update t1 set (f1, f2, f3...fn) = (select f1, f2,f3...fn from t2 where id=t1.id);
-wander2001(猫行天下);
2003-6-10
(#1232687@0)
-
Which database? Oracle? MS SQL?
-f1f(f1f);
2003-6-11
(#1235122@0)