我想更新大約800行,並想更新table_c它從table_A和table_b匹配兩個值。 table_a和table_c通過value_id關聯。從表中更新值如果從其他兩個表值匹配
例子:
CREATE TABLE TABLE_A (VALUE_ID INTEGER, PERSON_ID INTEGER, LAST_NAME VARCHAR2(15), FIRST_NAME VARCHAR2(15));
CREATE TABLE TABLE_B (VALUE_ID INTEGER, LAST_NAME VARCHAR2(15), FIRST_NAME VARCHAR2(15), ALIAS_ID INTEGER);
CREATE TABLE TABLE_C (VALUE_ID INTEGER, ALIAS_ID INTEGER, PERSON_ID INTEGER);
-----
INSERT INTO TABLE_A (VALUE_ID, PERSON_ID, LAST_NAME, FIRST_NAME)
VALUES (1, 6069, 'SMITH', 'JOHN');
INSERT INTO TABLE_A (VALUE_ID, PERSON_ID, LAST_NAME, FIRST_NAME)
VALUES (2, 6111, 'ADAMS', 'JOHN');
INSERT INTO TABLE_A (VALUE_ID, PERSON_ID, LAST_NAME, FIRST_NAME)
VALUES (3, 6117, 'ADAMS', 'SAM');
----
INSERT INTO TABLE_B (VALUE_ID, LAST_NAME, FIRST_NAME, ALIAS_ID)
VALUES (4, 'SMITH', 'JOHN', 40856);
INSERT INTO TABLE_B (VALUE_ID, LAST_NAME, FIRST_NAME, ALIAS_ID)
VALUES (5, 'ADAMS', 'JOHN', 3425);
INSERT INTO TABLE_B (VALUE_ID, LAST_NAME, FIRST_NAME, ALIAS_ID)
VALUES (6, 'ADAMS', 'SAM', 40831);
-----
INSERT INTO TABLE_C (VALUE_ID, ALIAS_ID, PERSON_ID)
VALUES (7, 28, 6069);
INSERT INTO TABLE_C (VALUE_ID, ALIAS_ID, PERSON_ID)
VALUES (8, 1022, 6111);
INSERT INTO TABLE_C (VALUE_ID, ALIAS_ID, PERSON_ID)
VALUES (9, 40473, 6117)
我一直在使用一個更新語句來完成這個和/或UPDATE語句嘗試,但它不工作。不知道我是否需要IF/ELSE語句。
最後,表B和表C中的alias_id必須相同。所以,這就是爲什麼table_C會被更新的原因。
這是我迄今爲止
UPDATE TABLE_C
SET C.ALIAS_ID = (SELECT B.ALIAS_ID
FROM TABLE_B B
JOIN TABLE_A A
ON A.FIRST_NAME = B.FIRST_NAME AND A.LAST_NAME = B.LAST_NAME);
您已將此標籤標記爲SQL Server和Oracle SQL Developer。您真的使用Oracle SQL Developer連接到Microsoft SQL Server數據庫嗎?所以你正在尋找SQL Server語法而不是相關更新的Oracle語法? – 2015-03-02 22:18:54
我正在使用oracle-sql開發人員,並且它已連接到Microsoft SQL Server數據庫。 – bbetos 2015-03-02 22:20:46
如果'TABLE_B'和'TABLE_A'之間存在匹配,那麼'TABLE_C'的哪個特定記錄應該被更新? – 2015-03-02 22:33:59