此查询:
SELECT "Nume", "Prenume" FROM public."Personal"
WHERE "Cod_angajat"=(SELECT "Cod_angajat" FROM public."Consultati");
生成此错误:
ERROR: more than one row returned by a subquery used as an expression
********** Error **********
ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000
同一个数据库中有两个表。因此,我要杀了我的笔记本电脑。是因为查询将返回相同的值两次左右?
答案 0 :(得分:1)
WHERE something = something_else
部分要求something
和something_else
必须是同一类型的奇异值。 SQL允许您使用子查询替换something_else
,但此子查询仍必须返回与something
相同类型的奇异值。
这意味着您的子查询必须返回包含一个字段的一行。
让我重复一遍:您的子查询必须只返回一行,并且该行必须包含一个且只包含一个字段。零行不会做;两行或更多行不会这样做;两个或两个以上的领域不会这样做;你只需要一行,而且只需要一个字段。
错误消息非常清楚地表明您的子查询返回多行。有时候错误信息是含糊不清的,所以人们会来堆栈溢出来问他们的意思;这不是其中之一。
事实上,您的查询没有任何过滤器(没有WHERE
子句),所以 它会返回表格中的所有行。
这显然不起作用。
您需要重新创建子查询,以便它只返回一行。