我有这样的架构:
- 员工(eno、ename、zip、hdate)
- 客户(cno、cnmae、街道、 zip 、电话)
- 邮政编码( zip 、城市)
其中 zip 在邮政编码中是 pk,在其他表中是 fk。
我必须编写一个更新查询,将整个数据库中所有出现的邮政编码 4994 更新为 1234。
update zipcodes,customers,employees
set zip = 0
where customers.zip = zipcodes.zip
and employees.zip = zipcodes.zip;
但我知道我做的不对。有没有办法在单个更新查询中更新所有表 zip?
最佳答案
Oracle 不支持多表更新语句。
确认
ZIPCODES
表中存在邮政编码“1234”INSERT INTO ZIPCODES (zip, city) VALUES (1234, '?')
为 CUSTOMERS 和 EMPLOYEES 表编写单独的更新语句:
UPDATE CUSTOMERS SET zip = 1234 WHERE zip = 4994 UPDATE EMPLOYEES SET zip = 1234 WHERE zip = 4994
删除之前的代码:
DELETE FROM ZIPCODES WHERE zip = 4994
关于sql - 更新多个表的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399380/