前言
最近碰到一個PostgreSQL搜尋與句的問題。
就是怎樣在PostgreSQL達到類似SQL Server的Outer Apply的寫法。
因為需要在原本一對一的表,再去LEFT JOIN一個一對多資料。
並且把一對多資料取得一個結果存進一對一的表,像是Boolean、數量。
目標:
一張是訂單主表,一張是訂單明細表
想以主表為主,取得有幾張明細表數量。
Table如下:
Table ORDER
1 | SEQ |
Table ORDER_DETAIL
1 | SEQ | ORDER_SEQ | NAME |
使用 Lateral :
1 | SELECT |
結果
1 | ORDER_SEQ | ORDER_DETAIL_COUNT |
不用 Lateral:
1 | SELECT |
結果
1 | ORDER_SEQ | ORDER_DETAIL_COUNT |
總結
用LATERAL會比較直覺,就不用最後再去GROUP BY。
如果想繼承上面LEFT JOIN表的條件,那LATERAL優勢就會出來,會顯得簡單很多。