SQL问题:查询出来第一个值,如何更新到别的表中

来源:百度知道 编辑:UC知道 时间:2024/05/21 19:23:03
目的是:从 DimissionTypes 表中取出一个ID,写入到 Employee 表中的 dimission_type_id 中。

软件是:Access2003,
SQL语句是:

UPDATE
FROM Employee
SET dimission_type_id = (
SELECT first(dimission_type_id) FROM DimissionTypes
)
WHERE leave_date <> NULL

问题是这样的SQL语句Access报错。我把 SELECT 语名换成别的常量就没有报错。
感谢:一力感冒清 兄关心小弟的问题。
SELECT first(dimission_type_id) FROM DimissionTypes
我测试过,就返回出一个值。(出错当时就试过了。)

感谢: 九转玄身 兄关心小弟的问题。
在 ACCESS 中测试你的代码提示没有ROWNUM这个变量。

感谢: cyy_041 兄关心小弟的问题。
两张表均只有一个主键。

感谢: cwan_shan 和 传说中的鹰王 兄关心小弟的问题。
我把 XXX <> NULL 改成 XXX IS NOT NULL。问题依旧。

再次感谢 一力感冒清 兄:
您的代码小弟我测试失败。

再次感谢 cyy_041 兄:
问题也不在这里,之前的贴子中己有说明。

lz写的有语法错误,用下面的就能搞定。

ACCESS:

UPDATE
Employee
SET dimission_type_id = (
SELECT first(dimission_type_id) FROM DimissionTypes
)
WHERE leave_date IS NOT NULL;

报错的原因可能是这个SELECT语句返回的是一个集合,或者没有返回值
你先把SELECT first(dimission_type_id) FROM DimissionTypes
这句的结果打出来看看,就知道了

用别名试下
UPDATE
FROM Employee e
SET e.dimission_type_id = (
SELECT first(d.dimission_type_id) FROM DimissionTypes d
)
WHERE e.leave_date <> NULL

如果还不行,检查下你两的表的dimission_type_id字段的类型是否一样。
还不行,那看你能否把那数据库导出成SQL文件发给我看下。
我也想不出有什么其他可能性了

ACCESS的不清楚 与Oracle的有点区别吧?下面是我给你写的Oracle的保证对 你在access里试试吧
UPDATE employee
SET dimission_type_id = (
SELECT dimission_type_id FROM dimissionTypes WHERE ROWNUM<2)
WHERE leave_date<>null;
楼上说的对要保证子查询只有一个值 不能有多条记录
看看UPDATE FROM employee对吗?在Oracle里没有中间那个from啊!你试试吧

以我的应验猜测哈
这个SQL没有问题
我觉得问题出在主键重复上,
E