通过子查询中的 id 列表选择条目?
Posted
技术标签:
【中文标题】通过子查询中的 id 列表选择条目?【英文标题】:Select entries by list of ids from subquery? 【发布时间】: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 列表。如何正确制作?
【问题讨论】:
【参考方案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,我已经编辑了答案 - 你现在可以查看以上是关于通过子查询中的 id 列表选择条目?的主要内容,如果未能解决你的问题,请参考以下文章
MySQL:按日期选择前 5 个和后 5 个条目,1 个查询,没有子查询