回答

收藏

子查询的自联接

技术问答 技术问答 298 人阅读 | 0 人回复 | 2023-09-14

我想知道,是否可以使用PostgreSQL将查询结果与自身连接?
& t+ r; v" @0 C) ~1 b6 _, f, E$ ?               
) t+ b- A$ \$ W% u: i解决方案:
* c5 i" e/ k# K& H1 w, f! y& Q& S$ G                4 A1 a" d) @1 h4 |% o9 G9 K, V
% {5 f( m+ [8 T. k
3 W1 X! V9 k# K4 e& ~9 u4 }
                您可以使用WITH来做到这一点:! D3 I- ~# u- f
WITH subquery AS(- H4 R% ?+ |2 i. F8 J5 k
    SELECT * FROM TheTable
" Q2 r- [* U/ Q! b)
$ _- b" {, b9 z# s4 w0 ~6 W  jSELECT *, ^: x, q, O& {8 w7 u' n; L6 J2 f
FROM subquery q1
1 K4 o% K; ~" Y! n/ zJOIN subquery q2 on ...
" Q. C! `6 b/ O% u! m" W或者通过创建一个包含查询的VIEW并加入该查询:
' F: a2 \) h' JSELECT *, t, ?9 h3 W2 Y# y1 v' F& e
FROM TheView v14 l/ a$ g' D# `
JOIN TheView v2 on ...# q/ P1 l/ V1 S9 v2 C  q7 O$ z
还是蛮力的方法:两次键入子查询:) G6 O) X1 t0 N: l& `
SELECT *0 p( J# g4 \5 L+ X
FROM (
% Y0 }7 h. s9 m& `4 y    SELECT * FROM TheTable
' k6 t8 s! b! [$ J( e) sub15 n0 g, w4 L6 s4 {9 B
LEFT JOIN (
2 s  J: w$ M) r, N; K/ m" s3 u% x    SELECT * FROM TheTable& D8 o: A0 N# J
) sub2 ON ...
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则