SQL语句有问题求救

来源:百度知道 编辑:UC知道 时间:2024/09/21 19:44:38
UPDATE tblUnitBlockArrange SET DeviceID = TB.DeviceID
FROM tblUnitBlockArrange AS TA,vwDeviceList AS TB
WHERE TA.DeviceName=TB.DeviceName
请问有没有高手知道这句语句有什么问题,执行的时候总是提示“TB.DeviceID
FROM tblUnitBlockArrange AS TA ”语法错误
TO LK_soso:
WHERE 语句之前应该还是需要 FROM来指定表名的替代字符TA和TB吧

补充一下:我用的是access数据库

TO ytbelwxg
都试过还是不行,最后一种写法感觉可以,不过还是提示“操作必须使用一个可更新的查询”
搜索了一下,使用网上说的解决此类问题的方法,就是ntf格式改权限方法,可是还是不管用
TO youyuan1688
应该可以确定不存在找不到数据或者数据重复的问题,按照你的写法还是一样会提示“操作必须使用一个可更新的查询”,我随便指定一个值是可以更新的,可见应该也不是权限问题
虽然没有解决,不过还是谢谢各位回答

UPDATE a SET a.DeviceID = b.DeviceID FROM tblUnitBlockArrange a,vwDeviceList b WHERE a.DeviceName=b.DeviceName

UPDATE a SET a.DeviceID = b.DeviceID FROM tblUnitBlockArrange a inner join vwDeviceList b on a.DeviceName=b.DeviceName

UPDATE tblUnitBlockArrange set DeviceID=(select DeviceID from vwDeviceList where DeviceName=tblUnitBlockArrange.DeviceName)

试试这三种的其中一种吧,呵呵

你怎么写一起了?
更新语句是这样的:UPDATE tblUnitBlockArrange SET DeviceID = TB.DeviceID WHERE TA.DeviceName=TB.DeviceName

DeviceID :列名
TB.DeviceID :值
TA.DeviceName=TB.DeviceName :选择修改的行的条件

UPDATE tblUnitBlockArrange TA set TA.DeviceID=(select TB.DeviceID from vwDeviceList TB where TB.DeviceName=TA.DeviceName)

这样的写法应该是没有错的,不过采用子查询的要求就是select TB.DeviceID from vwDeviceList TB where TB.DeviceName=TA.DeviceName 这个必须返回唯一值,不然update语句指定要失败的,vwDeviceList 这个应该是视图吧,我怀疑select TB.DeviceID from vwDeviceList TB where TB.DeviceName=TA.DeviceName的结果可能存在重复或者为查不到数据的情况,先检查一下