【发布时间】:2009-10-12 04:31:20
【问题描述】:
update tablename set (col1,col2,col3) = (select col1,col2,col3 from tableName2 order by tablenmae2.col4) 返回错误 失踪 )。如果我删除 order by 子句,查询工作正常
【问题讨论】:
标签: oracle
update tablename set (col1,col2,col3) = (select col1,col2,col3 from tableName2 order by tablenmae2.col4) 返回错误 失踪 )。如果我删除 order by 子句,查询工作正常
【问题讨论】:
标签: oracle
在 UPDATE 的子查询中不允许使用 ORDER BY。所以你得到错误“Missing )”,因为解析器期望子查询在你有 ORDER BY 的地方结束。
【讨论】:
ORDER BY 打算做什么?
你可能想到的是这样的:
UPDATE TableName
SET (Col1, Col2, Col3) = (SELECT T2.Col1, T2.Col2, T2.Col3
FROM TableName2 AS T2
WHERE TableName.Col4 = T2.Col4
)
WHERE EXISTS(SELECT * FROM TableName2 AS T2 WHERE TableName.Col4 = T2.Col4);
这个看起来很笨拙的操作:
一些 DBMS 还支持更新连接表示法以减少这种表示法的可怕性。
【讨论】: