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