在 SQL 中出现子查询错误

getting subquery error in SQL

尝试使用我当前的 table 插入一些 table。这是我当前的 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

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression

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

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)

我想你想要这样的东西:

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 在您的查询中未定义(除非它是 customer 中的一列,这似乎不太可能)。
  • 如果子查询的任何名称为 NULL
  • not in 将过滤所有行。我用 not exists.
  • 替换了它
  • 我推测你想避免 customer 中的重复条目,所以我更改了子查询。
  • 在子查询中使用 in/not in 时,select distinct 是多余的。