不使用JOIN如何实现关键词SQL连接?8 D6 [4 ]3 q, b) l
这并非真正必要,但我认为通过这样做,我可以更好地理解联系的实际作用。 3 W6 Q z9 Y7 s( X 7 X3 K1 T9 [8 n 解决方案: $ L H }* Q" C, y; e' v+ y7 m5 [, C 基本的INNER JOIN易于实现。 4 h! [( v+ n, n6 @. d" g; h7 M. ~" K5 cSELECT L.XCol,R.YColFROM LeftTable AS LINNER JOIN RightTable AS RON L.IDCol=R.IDCol;等效于:1 ~/ ~& B5 ]: _8 n# K' q/ ]* k
SELECT L.XCol,R.YColFROM LeftTable AS L,RightTable AS RWHERE L.IDCol=R.IDCol;扩展到LEFT / RIGHT / FULL OUTER JOIN,你只需要正确列出不匹配的行和行NULL联合到以前INNER JOIN。6 b- o, a# B0 ^! U9 F' y, \
添加左外连接: " m( \5 o8 J0 B2 X m& S" e9 |/ A+ fUNION ALLSELECT L.XCol,NULL /* cast the NULL as needed */FROM LeftTable AS LWHERE NOT EXISTS SELECT * FROM RightTable AS R WHERE L.IDCol=R.IDCol)添加正确的外部连接:3 I7 ?( {% B- O
UNION ALLSELECT NULL,R.YCol /* cast the NULL as needed */FROM RightTable AS RWHERE NOT EXISTS SELECT * FROM LeftTable AS L WHERE L.IDCol=R.IDCol)对于FULL OUTER JOIN,请同时添加以上两项。