首页 > 解决方案 > postgres:查询结果到变量中以备后用

问题描述

我最终会成为一个复杂的查询,其中某些部分经常会重复。因此,我想将一些子查询的结果存储到变量中,然后可以在主查询中使用。

例如,我想将变量设置'variable_id'为等于一个 SELECT 查询并variable_school_id等于另一个 SELECT 查询:

variable_id integer := (SELECT id FROM account WHERE email = 'test@test.com');
variable_school_id integer := (SELECT school FROM account WHERE email = 'test@test.com');

然后我想在查询中使用这些变量,如下所示:

select * from doctor where account_id = variable_id AND school = variable_school_id ;

我该怎么做呢?

标签: sqlpostgresql

解决方案


你不能只使用 CTE 吗?

with params as (
      SELECT id, school
      FROM account
      WHERE email = 'test@test.com'
     )
select d.*
from params cross join
     doctor d
     on d.account_id = params.id and d.school = params.school;

推荐阅读