【问题标题】:Can't get this simple temporary table code to work无法让这个简单的临时表代码工作
【发布时间】:2018-04-28 11:59:26
【问题描述】:

中间两行取出后,空白输出正常出现(单列)!

CREATE TABLE #ProductNames (ProductName varchar(40));

INSERT INTO #ProductNames
SELECT p.ProductName FROM DBO.PRODUCTS AS p;

SELECT * FROM #ProductNames;

DBO.PRODUCTS 的外观如下:

此外,问题在最后一行中带有一个奇怪的注释/建议:>

这是该注释之后的结果! -
[3

【问题讨论】:

  • DBO.PRODUCTS 里面真的有数据吗?
  • 是的,在我的主帖中也上传了截图
  • 这不应该发生 AFAIK。我建议直接从 SQL Server Management Studio 执行此操作。我怀疑您使用的网站有问题。
  • 好的,感谢@TimBiegeleisen 的提示
  • 您已将产品表指定为dbo.products;最后一个注释说不要那样做;也许这就是问题所在(不是 SQL 问题;但可能是本网站的限制)。

标签: sql-server tsql temp-tables


【解决方案1】:

我知道这是事实发生后的 12 个月,但我目前正在做 OP 发布问题的相同课程,这个答案刚刚被 DataCamp 接受为正确的:

CREATE TABLE #ProductNames(ProductName varchar(40))

INSERT INTO #ProductNames 
SELECT ProductName FROM Products

SELECT * FROM  #ProductNames

【讨论】:

    【解决方案2】:

    尝试像这样使用 SELECT INTO 语句:

    SELECT ProductName 
    INTO #ProductNames
    FROM DBO.PRODUCTS;
    
    SELECT * 
    FROM #ProductNames;
    

    【讨论】:

      【解决方案3】:

      很可能,该网站已为您创建了架构。

      恰好在 [dbo] 架构中有一个 [Products] 表。

      您需要使用 [Products],而不是 [dbo].[Products]。在解析不合格的对象名称时,例如 [Products],SQL Server 将首先在您的默认架构中查找该对象。您的默认架构很可能是网站为您创建的架构。

      【讨论】:

        猜你喜欢
        • 2012-05-19
        • 2016-01-17
        • 2011-12-03
        • 2019-04-13
        • 1970-01-01
        • 2017-09-19
        • 1970-01-01
        • 2015-07-31
        • 1970-01-01
        相关资源
        最近更新 更多