Sql Oracle查询更新自
我想知道我是否可以在Oracle数据库中执行此查询Sql Oracle查询更新自,sql,oracle,Sql,Oracle,我想知道我是否可以在Oracle数据库中执行此查询 UPDATE Table_A SET Table_A.col1 = Table_B.col1, Table_A.col2 = Table_B.col2 FROM Some_Table AS Table_A INNER JOIN Other_Table AS Table_B ON Table_A.id = Table_B.id WHERE Table_A.col3 = 'cool'
UPDATE
Table_A SET
Table_A.col1 = Table_B.col1,
Table_A.col2 = Table_B.col2 FROM
Some_Table AS Table_A
INNER JOIN Other_Table AS Table_B
ON Table_A.id = Table_B.id WHERE
Table_A.col3 = 'cool'
这是在sql server(microsoft)上运行的。但无法在oracle db中工作。你能告诉我原因吗?这里有一种可能有效的方法:
UPDATE
(
SELECT a.col1 AS col1a, a.col2 AS col2a, b.col1 AS col1b, b.col2 AS col2b
FROM Some_Table a
INNER JOIN Other_Table b
ON a.id = b.id
WHERE a.col3 = 'cool'
) t
SET
a.col1a = b.col1b,
a.col2a = b.col2b;
如果Oracle不想运行上述操作,则必须使用相关子查询。以下是一种可能有效的方法:
UPDATE
(
SELECT a.col1 AS col1a, a.col2 AS col2a, b.col1 AS col1b, b.col2 AS col2b
FROM Some_Table a
INNER JOIN Other_Table b
ON a.id = b.id
WHERE a.col3 = 'cool'
) t
SET
a.col1a = b.col1b,
a.col2a = b.col2b;
如果Oracle不想运行上述操作,则必须使用相关子查询。您只需执行以下操作:
UPDATE table_a SET table_a.col1 = (SELECT table_B.COl1
FROM table_B
WHERE table_a.id = table_b.id),
table_a.col2 = (SELECT table_B.COl2
FROM table_B
WHERE table_a.id = table_b.id)
WHERE table_a.col3='cool';
您可以简单地执行以下操作:
UPDATE table_a SET table_a.col1 = (SELECT table_B.COl1
FROM table_B
WHERE table_a.id = table_b.id),
table_a.col2 = (SELECT table_B.COl2
FROM table_B
WHERE table_a.id = table_b.id)
WHERE table_a.col3='cool';
您可以在Oracle中使用“合并到”
MERGE Into Table_A t USING Table_B s
ON (t.id = s.id)
when matched then UPDATE SET
t.col1 = s.col1, t.col2 = s.col2
WHERE t.col3 = 'cool'
您可以在Oracle中使用“合并到”
MERGE Into Table_A t USING Table_B s
ON (t.id = s.id)
when matched then UPDATE SET
t.col1 = s.col1, t.col2 = s.col2
WHERE t.col3 = 'cool'
我问的原因是——“Oracle开发人员没有以这种方式实现该功能”。我问的原因是——“Oracle开发人员没有以这种方式实现该功能”。