程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle中如何實現Mysql的兩表關聯update操作

Oracle中如何實現Mysql的兩表關聯update操作

編輯:Oracle教程

Oracle中如何實現Mysql的兩表關聯update操作


在看《MySQL 5.1參考手冊》的時候,發現MySQL提供了一種兩表關聯update操作。原文如下:   UPDATE items,month SET items.price=month.price WHERE items.id=month.id;   在MySQL中構造表驗證了一下  
mysql> select * from test;
+------+--------+
| id   | salary |
+------+--------+
|    1 |    100 |
|    2 |    200 |
|    3 |    300 |
+------+--------+
3 rows in set (0.00 sec)

mysql> select * from test1;
+------+--------+
| id   | salary |
+------+--------+
|    1 |    400 |
|    2 |    500 |
+------+--------+
2 rows in set (0.00 sec)

mysql> update test,test1 set test.salary=test1.salary where test.id=test1.id;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from test;
+------+--------+
| id   | salary |
+------+--------+
|    1 |    400 |
|    2 |    500 |
|    3 |    300 |
+------+--------+
3 rows in set (0.00 sec)
不難看出,上述兩表關聯update中只更新了test中id為1和id為2的行。   尋思了一下,Oracle中好像並沒有提供兩表關聯的update操作,同樣輸入了上述語句,Oracle報錯,報錯信息如下:   SQL> update test,test1 set test.salary=test1.salary where test.id=test1.id; update test,test1 set test.salary=test1.salary where test.id=test1.id            * 第 1 行出現錯誤:   ORA-00971: 缺失 SET 關鍵字   後來,查了查官方文檔,這種語法並不支持,那麼Oracle中如何實現MySQL中的這種效果呢?   鼓搗了一下,雖然出來了,但還是略為復雜。   SQL> update test set test.salary=(select salary from test1 where test1.id=test.id)             where exists (select 1 from test1 where test1.id=test.id);   已更新2行。   SQL> select * from test;           ID     SALARY ---------- ----------          1        400          2        500          3        300

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved