子查询返回的多于一行用作pgadmin

时间:2018-11-01 03:36:05

标签: sql postgresql subquery

所以我写了这段代码,

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 :(得分:0)

这只是我的猜测。.也许这可以工作。.

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,则必须执行aggregatelimit。因为仅subquery喜欢return 1 row,所以您会显示错误。因此,Join在您的情况下会做得更好。.您可以在此处阅读Join Documentation

答案 1 :(得分:0)

我认为SELECT名称FROM clan_id = 6的公民将返回多于1行。公民表可能具有clan_id = 6的多个记录。 如果在select中使用子查询,则它还必须仅返回一行,并且您可能有多个。