2017-01-22 10 views
0

Этот запрос:Более одной строки, возвращаемой подзапросом, используемым в качестве выражения для простого запроса?

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

Добро пожаловать в переполнение стека! Сначала вы можете взять тур (http://stackoverflow.com/tour) и узнать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и создать [ Minimal, Complete и Verifiable] (http://stackoverflow.com/help/mcve). Это облегчает нам помощь. –

ответ

1

Часть WHERE something = something_else требует, чтобы и something, и something_else должны быть сингулярными значениями того же типа. SQL позволяет вам заменить something_else на подзапрос, но тогда этот подзапрос должен все же вернуть сингулярное значение того же типа, что и something.

Это означает, что ваш подзапрос должен возвращать одну строку, содержащую одно поле.

Позвольте мне повторить следующее: ваш подзапрос должен возвращать одну и только одну строку, и эта строка должна содержать одно и только одно поле. Нулевые строки не будут этого делать; две или несколько строк не будут этого делать; два или более полей не будут этого делать; вам нужна ровно одна строка и ровно одно поле.

Сообщение об ошибке очень четко говорит о том, что ваш подзапрос возвращает более одной строки. Иногда сообщения об ошибках являются загадочными, поэтому люди приходят в stackoverflow, чтобы спросить, что они означают; это не один из этих случаев.

На самом деле, ваш запрос не имеет фильтра, (WHERE), поэтому возвращает все строки в таблице.

Это явно не работает.

Необходимо подставить свой подзапрос, чтобы он возвращал только одну строку.

+0

Спасибо, сэр :) –

Смежные вопросы