Sql 是否按子查询中的ID列表选择条目?
在Sql 是否按子查询中的ID列表选择条目?,sql,postgresql,Sql,Postgresql,在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
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');
错误:
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列表。如何正确制作?您可以在下面尝试-
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错误[42803]:错误:在WHERE
中不允许使用聚合函数。您还有其他想法吗?我不知道为什么,但您的代码返回空结果。事实上,如果我在(2,10,12,44,52)中的factors\u QUESTIONS\u relationship(factors\u QUESTIONS\u ID)中提出这样的sql请求SELECT ARRAY\u AGG(QUESTION\u ID)作为factors\u QUESTIONS\u relationship(factors\u ID)的问题,我得到的结果像{7,8,9,10,11,12,39,40,41,42,43,47,48}
,这是正确的。你觉得怎么样?@Nurzhanogerbek,我已经编辑了答案-你现在可以查看了