【问题标题】:Select entries by list of ids from subquery?通过子查询中的 id 列表选择条目?
【发布时间】:2019-03-27 05:50:06
【问题描述】:

PostgreSQL 数据库中我提出这样的SQL 请求:

SQL

SELECT 
    ARRAY_AGG (QUESTION_ID) AS QUESTIONS 
FROM 
    factors_questions_relationship 
WHERE 
    FACTOR_ID IN (SELECT ARRAY_AGG (FACTOR_ID) AS FACTORS 
                  FROM surveys_factors_relationship 
                  WHERE SURVEY_ID = '9bef1274-f1ee-4879-a60e-16e94e88df38');

错误

此 SQL 请求引发错误:
SQL 错误 [42883]:错误:运算符不存在:整数 = 整数 []
没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

第二个子查询返回id列表:{2,10,12,44,52}。我想在主查询中使用该 ID 列表。如何正确制作?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    你可以试试下面-

    SELECT ARRAY_AGG (QUESTION_ID) AS QUESTIONS FROM factors_questions_relationship 
    where FACTOR_ID IN 
    (
       SELECT FACTOR_ID AS FACTORS FROM surveys_factors_relationship 
       WHERE SURVEY_ID = '9bef1274-f1ee-4879-a60e-16e94e88df38'
    )
    

    【讨论】:

    • 您好!我现在测试了你的代码。不幸的是,它引发了错误:SQL Error [42803]: ERROR: aggregate functions are not allowed in WHERE。您还有其他想法吗?
    • 我不知道为什么,但您的代码返回空结果。事实上,如果我发出这样的 sql 请求 SELECT ARRAY_AGG (QUESTION_ID) AS QUESTIONS FROM factors_questions_relationship WHERE FACTOR_ID IN (2,10,12,44,52) 我会得到像 {7,8,9,10,11,12,39,40,41,42,43,47,48} 这样的结果,这是正确的。你怎么看?
    • @NurzhanNogerbek,我已经编辑了答案 - 你现在可以查看
    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多