在查询中获取错误

问题描述:

更新表名称集(col1,col2,col3)=(从tableName2按tablenmae2.col4的顺序选择col1,col2,col3)返回错误 Missing)。查询工作正常,如果我删除订单条款在查询中获取错误

+0

什么是错误? – blparker 2009-10-12 04:35:33

ORDER BY不允许在UPDATE中的子查询中。所以你得到错误“Missing”),因为解析器期望子查询在你有ORDER BY的地方结束。

+0

是的我知道order by子句在更新查询中没有使用,但是在这里我使用了select查询中的ordrt by子句。 – 2009-10-13 05:25:15

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); 

这种笨拙的寻找操作:

  1. 抓斗从TableName2行上的值相匹配表名是Col4并使用相应列中的值更新TableName。
  2. 确保只更改具有TableName2中对应行的TableName中的行;如果您从UPDATE中删除WHERE子句,如果在TableName中没有TableName2中的匹配条目中存在行,则将Col1,Col2和Col3中的值替换为空值。
  3. 某些DBMS还支持更新连接符号以减少这种表示法的可怕性。

开始=“2”>