嵌套查询中SQL Server的列名无效

时间:2015-12-08 07:57:53

标签: sql-server database sql-server-2012

这是我的Orders表:

Orders
(
    ID int IDENTITY(1,1), ---> PK
    OrderID int NOT NULL, ---> FK
    ProductID int NOT NULL,--> FK
    CustomerID int NOT NULL,-> FK
    Quantity int NOT NULL,
    TotalPrice int,
)

我想从此表中获取最后orderID值,因此我得到了我需要执行的查询。我使用嵌套查询属于

,从最后一行得到OrderID
SELECT OrderID 
FROM (SELECT TOP 1 * 
      FROM dbo.Orders 
      ORDER BY OrderID DESC)

执行此查询后,我得到了

  

')附近的语法错误。

该查询中OrderID的错误和无效列名。

有人可以说我的错误在哪里吗?

感谢。

2 个答案:

答案 0 :(得分:1)

你错过了表别名

SELECT OrderID 
FROM (SELECT TOP 1 * 
      FROM dbo.Orders 
      ORDER BY OrderID DESC) AS A

答案 1 :(得分:1)

我认为您需要在子查询中添加别名。所以改变这个:

SELECT OrderID 
FROM (SELECT TOP 1 OrderID
      FROM dbo.Orders 
      ORDER BY OrderID DESC)

对此:

SELECT tbl.OrderID 
FROM (SELECT TOP 1 OrderID
      FROM dbo.Orders 
      ORDER BY OrderID DESC) AS tbl