是否可以从 table 中的两列创建 'variable' 并使用它在另一个 table 中查找结果

Is it possible to create a 'variable' from two columns in a table and use that to look up result in another table

我在 table、"financials" 中有一个唯一标识符 "AB",它的值看起来像“123-456”。在另一个 table、"project_info" 中,我有两列 "A" 和 "B" A 有破折号的第一部分,B 有第二部分。

例如如果 financials 的 "AB" 为 '123-456',则 project_info 的 "A" 为 123,"B" 为 456。

我的目标是 select 来自财务 table 的信息,其中 "AB" 等于来自 projects_info 'dash' "A" "B" 来自 projects_info。

我脑海中理想的 SQL 查询应该是这样的:

Select * from financials where "AB" = (select "A" from project_info)-(select "B" from project_info)

我知道这不太正确,但我试过这样做:

select * from financials where "AB" = concat_ws((select "A" from projects_info), '-', (select "B" from projects_info))

我得到的错误是 more than one row returned by a subquery used as an expression

在普通的 PostgreSQL 代码中可以实现类似的功能吗?

作为补充信息,我想最终使用包 node-postgres.com 在 Node 中调用此查询。

您想要做的是 join 具有特定条件:

SELECT *
FROM financials f
JOIN projects_info pi ON(f."AB" = concat_ws('-', pi."A", pi."B")

您可能还想使用 concat(pi."A", '-', pi."B")pi."A" || '-' || pi."B" 而不是 concat_ws