ORDER BY项必须出现......但我没有ORDER BY子句

时间:2013-03-19 20:12:28

标签: sql sql-server sql-server-2008 ms-access

我收到了错误记录的错误:

  

如果指定了SELECT DISTINCT,则ORDER BY项必须出现在选择列表中。

这是我的SQL语句:

INSERT INTO PropertyList
            (PropertyID, Initials)
SELECT DISTINCT P.PropertyID, "vSTEBCodes"
FROM Property AS P INNER JOIN ValiditySTEBCodes AS VC 
              ON P.ControlNumber=VC.ControlNumber

正如您所看到的那样,看不到ORDER BY语句。据推测,某处有一个隐含的ORDER BY,但我看不到它。

我正在针对MS Access中链接到SQL Server 2008后端的链接表运行此语句。当我从完整版本的Access 2002运行它时,它运行没有问题。如果我尝试从Access 2000运行时运行它,我收到显示的错误。

我知道Access倾向于在将查询转发到ODBC源(特别是多记录INSERT和UPDATE)之前在后台重写查询。我想这可能是个问题。

1 个答案:

答案 0 :(得分:1)

根据评论进行编译,请尝试:

INSERT INTO dbo.PropertyList(PropertyID, Initials)
  SELECT P.PropertyID, Initials = 'vSTEBCodes' -- alias and single quotes
  FROM dbo.Property AS P -- always use schema prefix
  INNER JOIN dbo.ValiditySTEBCodes AS VC 
  ON P.ControlNumber = VC.ControlNumber
  GROUP BY P.PropertyID  -- instead of DISTINCT
  ORDER BY P.PropertyID; -- maybe overrides Access stupidity