0

尝试使用我当前的表插入到某个表中。这是我当前 Temptable 的结构:

CustomerID  Name        Values      FakeName
1           John        10apples    10apples_20oranges_30bananas
1           John        20oranges   10apples_20oranges_30bananas
1           John        30bananas   10apples_20oranges_30bananas
2           Steve       15apples    15apples_25oranges_35bananas
2           Steve       25oranges   15apples_25oranges_35bananas
2           Steve       35bananas   15apples_25oranges_35bananas
3           Harvey      10apples    10apples_20oranges_30bananas
3           Harvey      20oranges   10apples_20oranges_30bananas
3           Harvey      30bananas   10apples_20oranges_30bananas

这是我正在执行的代码片段:

Insert into customer (FakeName,type,address)
select (select distinct FakeName from Temptable),
        2,
        xyz

 from customer c
 where c.fakename not in (select distinct Fakename from TempTable)

得到关注error

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的

我想从表中插入不同的假名temptablecustomer确保假名已经存在,然后不要插入重复的假名

4

2 回答 2

2

select distinct FakeName from Temptable不是标量,所以你不能那样使用它。

我想这就是你所追求的:

Insert into customer (FakeName,type,address)
select distinct 
        FakeName,
        2,
        xyz
 from Temptable c
 where c.fakename not in (select distinct Fakename from customer)
于 2017-10-12T00:40:22.567 回答
0

我想你想要这样的东西:

Insert into customer (FakeName, type, address)
    select distinct tt.FakeName, 2, 'xyz'
    from temptable tt
    where not exists (select 1 from customer c where c.fakename = tt.fakename);

笔记:

  • xyz在您的查询中未定义(除非它是客户中的列,这似乎不太可能)。
  • not in如果子查询有任何名称,将过滤所有行NULL。我用not exists.
  • 我推测您想避免 中的重复条目customer,因此我更改了子查询。
  • 当使用in/not in与子查询时,select distinct是多余的。
于 2017-10-12T00:55:55.933 回答