MSSQL的UPDATE语句问题

有数据表A和B,
A中有字段time,logtime,outtime,TT_ID
B中有字段tt_id,uptime,sertime ,均是字符串类型

UPDATE A
SET time=b.uptime
FROM a INNER JOIN b ON a.tt_id=b.tt_id
WHERE (a.logtime=XXXX) and (a.outtime=XXXX)

我写了上面这个UPDATE语句,老是提示optional FROM because 什么的,可是我看了MSSQL的帮助文档,这个语句与那上面的例句没什么两样。

请教各位朋友,这如何是好呢。
XXXX是字符串
而SET A.TIME=B.UPTIME 我已经试过了,还是同样的提示

第1个回答  2007-03-23
UPDATE A
SET time=b.uptime
FROM a INNER JOIN b ON a.tt_id=b.tt_id
WHERE (a.logtime=XXXX) and (a.outtime=XXXX)

其实你这句有时有问题,有时没问题,为什么呢,如果b.uptime
FROM a INNER JOIN b ON a.tt_id=b.tt_id
WHERE (a.logtime=XXXX) and (a.outtime=XXXX)是单行记录,那么UPDATE就会成功,如果后面的返回的是多行,那a.time怎么可能等于多个值呢,mysql我不会,但肯定是这个原因,2个表如果是1对1的那就会成功。
第2个回答  2007-03-23
UPDATE A
SET a.time=(select b.uptime from b where b.tt_id
=a.tt_id ) WHERE (a.logtime=XXXX) and (a.outtime=XXXX)

有其他问题可以在给我发信息,谢谢!本回答被提问者采纳
第3个回答  2007-03-23
update a
set a.time=(select b.uptime from b where b.tt_id =a.tt_id )
where exists (select 1
from b
where b.tt_id =a.tt_id
and (a.logtime='XXXX') and (a.outtime='XXXX'))

有问题给我发信息
第4个回答  2007-03-23
有数据表A和B, 。。。。

把表的名字改掉
第5个回答  2007-03-23
UPDATE A
SET time=(SELECT top 1 uptime FROM b WHERE tt_id= A.tt_id )
from A
WHERE ...