将查询结果存储在变量中以在 Postgresql 中的另一个查询中使用

Dev*_*eam 8 postgresql

我是 Postgresql 的新手。请帮我解决它。

假设我有三个名为“table_1”、“table_2”和“table_3”的表

我想从 table_3 中获取与 table_1 和 table_2 相关的数据

比如我从 table_1 和 table_2 中检索 value_1 和 value_2

查询 1:

Select value_1 From table_1
Run Code Online (Sandbox Code Playgroud)

查询 2:

Select value_2 From table_2
Run Code Online (Sandbox Code Playgroud)

现在我想在 table_3 中使用这些值

查询 3:

Select * from table_3 where column_1 = value_1 and column_2 = value_2
Run Code Online (Sandbox Code Playgroud)

如何将前 2 个值存储在变量中并在第三个查询中使用它?

小智 6

您可以使用以下查询:

with v1 as (select value_1 from table_1),
     v2 as (select value_2 from table_2)
select * from table_3 where column_1 = v1 and column_2 = v2;
Run Code Online (Sandbox Code Playgroud)

如果 v1 和 v2 有多行,您可以使用“in”运算符而不是“=”运算符。

有关更多信息,请在此处查看 PostgreSQL 文档。

您还可以在此处查看 Stackoverflow 上与此类似的帖子。

  • 如果我们引用您在此处发布的文档链接,则此示例是不正确的。查询的最后一行应该是: select * from table_3 where column_1 = (select value_1 from v1) and column_2 = (select value_2 from v2)> 在这个简单的情况下看起来没有意义,因为它很简单。如果 v1 和 v2 查询很复杂,会看到更多好处 (3认同)
  • 正如 @DoArNa 提到的,我必须将查询更改为“where column_1 = (select value_1 from v1)”而不是“where column_1 = v1”。这就是文档所说的,这对我有用。 (2认同)