使用order by和where子句更新Statement

时间:2017-09-15 07:14:48

标签: sql sql-server sql-update sql-order-by

有人可以帮助我继续收到此错误: 除非还指定了TOP,OFFSET或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效。 这是我使用的查询:

UPDATE  SMS 
SET idx30 = 'New' 
WHERE idx30 in 
(
  SELECT * 
  FROM SMS 
  WHERE idx30 IS NULL
    AND (idx15 = 'Del' OR idx15 = 'Fail')
    AND Idx13 <> '1'
    AND Idx7 >= DATEADD(day, -1, GETDATE()) 
  ORDER BY idx7 DESC
);

2 个答案:

答案 0 :(得分:0)

您只需更新符合条件的行即可。不需要子查询或ORDER BY。

UPDATE  SMS 
SET idx30 = 'New' 
WHERE (idx15 = 'Del' OR idx15 = 'Fail')
  AND Idx13 <> '1'
  AND Idx7 >= DATEADD(day, -1, GETDATE()) 

答案 1 :(得分:0)

查询中的两个更正是:

  1. 订单错误即将发生,因为查询中的order by子句是语法错误。

  2. 你在子查询中写了*,这将再次抛出错误

  3.   

    当EXISTS没有引入子查询时,只能在选择列表中指定一个表达式。