Postgres SQL中如何关联两个均引用另一张表同列的字段?
解答方案
你需要两次关联Accounts表,分别设置不同的别名映射from_id和to_id即可,具体SQL语句如下:
SELECT t.date, t.description, t.amount, from_acc.name AS "from", to_acc.name AS "to" FROM Transactions t -- 关联转出账户 LEFT JOIN Accounts from_acc ON t.from_id = from_acc.id -- 关联转入账户 LEFT JOIN Accounts to_acc ON t.to_id = to_acc.id;
补充说明
- 这里用
LEFT JOIN是为了避免当交易的转出/转入账户id为空时,整条交易记录被过滤,如果你能确保from_id和to_id都是非空有效值,替换成INNER JOIN也可以 from和to属于PostgreSQL的保留关键字,所以作为字段别名时需要用双引号包裹,否则会触发语法错误- 针对你给出的示例数据,执行上述语句后,就会得到你预期的查询结果
内容的提问来源于stack exchange,提问作者Russell
相关产品推荐
相关产品推荐

