【问题标题】:How to combine two different sql queries into one with primary key in the where clause如何在where子句中将两个不同的sql查询组合成一个主键
【发布时间】:2023-03-26 05:28:01
【问题描述】:

我必须在 Postgres 中执行一个函数,该函数需要从同一个表返回两个不同查询的结果,并在同一个表字段(即主键)上使用 where 子句。

具有相同索引号(又名 inIndex、outIndex)的那些是相关的,其中一个是输入,第二个是它的输出。

例子:

SELECT 
       '9' as inIndex, 
       name as inFieldName 
    from FIELDS 
    where field_id = 1000000005

UNION

SELECT 
       '10' as inIndex, 
       name as inFieldName 
    from FIELDS 
    where field_id = 1000000007;

SELECT  
       '9' as outIndex, 
       name as outFieldName 
    from FIELDS 
    where field_id = 1000000004

UNION 

SELECT  
       '10' as outIndex, 
       name as outFieldName 
    from FIELDS 
    where field_id = 1000000006;

有没有办法将两个查询合二为一?

如果不是,如何将两个查询结果返回到 pl/pgsql 函数中的一个结果集中?

到目前为止,我已经提出了两个循环,将结果添加到具有 3 列(索引、inFiled、outField)的自定义类型中。有没有更好的方法来处理这个过程?

【问题讨论】:

  • 你能描述一下你想要得到的输出格式吗?

标签: sql database postgresql


【解决方案1】:

这样的事情怎么样:

SELECT
    '9' AS FieldIndex,
    InFields.name AS InFieldName,
    OutFields.name AS OutFieldName
FROM
    FIELDS AS InFields,
    FIELDS AS OutFields
WHERE
    InFields.field_id = 1000000005
AND OutFields.field_id = 1000000004

UNION

SELECT
    '10' AS FieldIndex,
    InFields.name AS InFieldName,
    OutFields.name AS OutFieldName
FROM
    FIELDS AS InFields,
    FIELDS AS OutFields
WHERE
    InFields.field_id = 1000000007
AND OutFields.field_id = 1000000006

显然你可能需要稍微调整一下...

【讨论】:

  • 感谢@stormCloud!这正是我正在寻找的查询,如此简单。经过一些更改后工作得很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 2019-01-09
相关资源
最近更新 更多