【问题标题】:Incorrect syntax near the keyword 'ORDER'关键字“ORDER”附近的语法不正确
【发布时间】:2014-01-24 06:37:04
【问题描述】:

我的应用程序正在生成这个查询。谁能告诉我这个查询出了什么问题

     SELECT task_id, 
     Count(*) Unread 
     FROM   discussion 
     WHERE  NOT EXISTS (SELECT * 
                        FROM   discussion_read 
                        WHERE  discussion.discussion_id = 
                        discussion_read.discussion_id 
                        AND discussion_read.user_id = ? 
                        AND discussion.task_id IN 
                          ((SELECT TOP 1025 task.task_id 
                            FROM   task 
                            WHERE 
                          ( ( task.task_code = 'A3090' ) 
                            AND ( task.proj_id = 6511 ) )) 
                                                 ORDER  BY task.task_id ASC) 
              ) 
    GROUP  BY task_id 

【问题讨论】:

  • 我在尝试保存视图时遇到此错误,使用执行得很好的查询。我的朋友告诉我,您不能使用 ORDER BY 进行视图查询——我想这是有道理的。

标签: sql sql-server


【解决方案1】:

你的订单需要在)下面试试

SELECT task_id, 
 Count(*) Unread 
 FROM   discussion 
 WHERE  NOT EXISTS (SELECT * 
                    FROM   discussion_read 
                    WHERE  discussion.discussion_id = 
                    discussion_read.discussion_id 
                    AND discussion_read.user_id = ? 
                    AND discussion.task_id IN 
                      ((SELECT TOP 1025 task.task_id 
                        FROM   task 
                        WHERE 
                      ( ( task.task_code = 'A3090' ) 
                        AND ( task.proj_id = 6511 ) ) 
                                             ORDER  BY task.task_id ASC)) 
          ) 
GROUP  BY task_id

【讨论】:

  • @BarbC.Goldstein :这是必要的,因为在选择查询中使用了TOP 关键字。 Top 没有 Order By 随机返回 top 25
【解决方案2】:

试试这个:-

 SELECT task_id, 
 Count(*) Unread 
 FROM   discussion 
 WHERE  NOT EXISTS (SELECT * 
                    FROM   discussion_read 
                    WHERE  discussion.discussion_id = 
                    discussion_read.discussion_id 
                    AND discussion_read.user_id = ? 
                    AND discussion.task_id IN 
                      (SELECT TOP 1025 task.task_id   --Remove Extra braces
                        FROM   task 
                        WHERE 
                        task.task_code = 'A3090' 
                        AND  task.proj_id = 6511 
                        ORDER  BY task.task_id ASC -- It should be for Select Top statement
                        ) 

          ) 
GROUP  BY task_id 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-08
    • 2019-01-01
    • 2013-12-16
    • 2017-11-22
    • 2018-06-16
    • 2013-10-29
    • 2014-06-22
    • 1970-01-01
    相关资源
    最近更新 更多