【问题标题】:SELECT INTO with subquerySELECT INTO 与子查询
【发布时间】:2015-12-11 14:06:58
【问题描述】:

关于 SQL Server 中的 SELECT INTO

以下抛出错误Incorrect syntax near ')'.

SELECT * INTO Sales.MyTable FROM 
(SELECT TOP(100) * FROM Sales.Customer)

以下会通过

With tempCust AS
(
SELECT TOP(100) * FROM Sales.Customer
)
SELECT * INTO Sales.MyTable FROM tempCust

这背后的规则是什么?

【问题讨论】:

  • SELECT * INTO Sales.MyTable FROM (SELECT TOP(100) * FROM Sales.Customer) AS T你漏掉了子查询结果的别名
  • 您需要为您的子查询设置别名。
  • 有什么问题只是:SELECT TOP(100) * INTO Sales.MyTable FROM Sales.Customer
  • 在这种情况下确实不需要子查询或 CTE。最初我想做一些需要 CTE 的事情,例如为按 customerID 分区的每个分区选择前 2 行。发生错误,我将其简化为更简单的调试示例。

标签: sql-server subquery common-table-expression select-into


【解决方案1】:

你能像下面这样在你的subquery 中添加一个alias,然后试试看..

SELECT * INTO Sales.MyTable FROM 
(SELECT TOP(100) * FROM Sales.Customer) as abc

【讨论】:

  • 正确。然而,我不相信“为什么”。对于self-join(A join A)我可以理解。但通常当它不模棱两可时,我倾向于跳过它,通常没有问题。
  • 另外,关于your link,为什么我们需要使用join或者子查询。 SELECT StateProvinceID, AddressID FROM Person.Address WHERE StateProvinceID = 39 的测试给了我同样的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2014-04-10
  • 2020-02-08
相关资源
最近更新 更多