более одной строки, возвращаемой подзапросом, используемым в качестве выражения @ pgadmin - PullRequest
0 голосов
/ 01 ноября 2018

Итак, я написал этот код,

SELECT 
    citizen_id, family_card_id, 
    (SELECT name FROM citizen WHERE clan_id = 6) AS nama, 
    (SELECT gender FROM citizen WHERE clan_id = 6) AS gender 
FROM 
    fcn_citizen;

и вывод ...

ОШИБКА: более одной строки, возвращенной подзапросом, используемым в качестве выражения
Состояние SQL: 21000

Кто-нибудь знает, в чем проблема? Спасибо за ответ ^^

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я думаю, что ВЫБЕРИТЕ имя ОТ гражданина, где clan_id = 6, возвращает более 1 строки. В таблице Citizen может быть несколько записей для clan_id = 6. Если вы используете подзапрос в select, он также должен возвращать только одну строку, и у вас, вероятно, больше 1.

0 голосов
/ 01 ноября 2018

Это только мои догадки .. Возможно, это сработает ..

SELECT 
     fcn_citizen.citizen_id, fcn_citizen.family_card_id,
     Citizen.name as nama, Citizen.gender as gender 
FROM 
     fcn_citizen
     Inner Join Citizen on fcn_Citizen.Citizen_ID = Citizen.Citizen_ID
                        And Citizen.Clan_ID = 6;

Если вы хотите использовать subquery, вы должны сделать aggregate или limit .. Потому что subquery только return 1 row как ошибка, которую вы показываете. Так что Join будет лучше в вашем случае .. Вы можете прочитать здесь для Присоединиться к документации

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