'insert into select'中的where子句不过滤记录

时间:2016-12-12 23:51:17

标签: sql sql-server where-clause insert-into

我正在编写一个查询,其中我使用INSERT INTO tablename SELECT语句,并使用INSERT INTO子句结束where语句。但是,where并未按预期过滤结果(我知道有些记录不符合此标准且应该过滤掉),也不会引发错误。所以,我无法弄清楚为什么它没有输出预期的结果。

请参阅下面的代码:

N'INSERT INTO table
 SELECT DISTINCT
      [Identifier]
      ,[Variable1]
      ,[Variable2]
      ,[Variable3]
      ,[Variable4]
      ,[Variable5]
      ,[Variable6]
      ,[Variable7]
      ,[Variable8]
      ,NULL
      ,[Variable9]
      ,NULL
  FROM [DBname].[tablename].[tablename2]
WHERE [Variable10] = ''Successful'';'

2 个答案:

答案 0 :(得分:3)

免费啤酒表示您的变量是VARCHAR(300),这个长度为340个字符,在WHERE子句之前截断它。

答案 1 :(得分:0)

您确定您的表名是否正确? ([DBname].[tablename].[tablename2]

你确定你的表结构插入是否正确?

Declare @sql varchar(4000)
Set @sql =N'
    INSERT INTO [TITMS_Test].[dbo].[GROUP] (Name, Description)
    SELECT DISTINCT Name, Description
    FROM [TITMS].[dbo].[GROUP]
    WHERE [Name] = ''Imported'';'
Print @sql
Exec (@sql)