【问题标题】:more than one row returned by a subquery used as an expression @ pgadmin用作表达式@pgadmin 的子查询返回的不止一行
【发布时间】:2018-11-01 03:36:05
【问题描述】:

所以我写了这段代码,

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

有谁知道问题出在哪里?谢谢你的回答^^

【问题讨论】:

  • 因为subquery 只返回 1 行.. 给出了样本数据和预期的输出..
  • 错误似乎很明显。你有什么不明白的地方吗?另一方面,您的数据并不明显。样本数据和期望的结果有帮助。

标签: sql postgresql subquery


【解决方案1】:

这只是我的猜测..也许这会起作用..

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

【讨论】:

    【解决方案2】:

    我认为 SELECT name FROM 公民 where clan_id = 6,返回超过 1 行。 Citizen 表可能有多个 clan_id=6 的记录。 如果您在 select 中使用子查询,它也必须只返回一行,而且您可能有超过 1 行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2018-11-16
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多