不使用JOIN如何实现关键词SQL连接? ! X/ m) b0 {9 j4 J* z/ M: {5 d这并非真正必要,但我认为通过这样做,我可以更好地理解联系的实际作用。 3 B+ e! h6 ]1 E [: N X& }* | 9 B* g" n1 f; ?; R# R4 F( C解决方案: 6 N3 a: V5 ^9 D$ U" [3 d8 a1 Q
基本的INNER JOIN易于实现。 $ V1 Z( p7 f( c! a/ _( XSELECT L.XCol,R.YColFROM LeftTable AS LINNER JOIN RightTable AS RON L.IDCol=R.IDCol;等效于:0 {( L6 V8 A+ D3 a9 k" }
SELECT L.XCol,R.YColFROM LeftTable AS L,RightTable AS RWHERE L.IDCol=R.IDCol;扩展到LEFT / RIGHT / FULL OUTER JOIN,你只需要正确列出不匹配的行和行NULL联合到以前INNER JOIN。8 q* I* @, u% n! u7 l, Q
添加左外连接:& c& U2 c+ g5 I
UNION 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)添加正确的外部连接:* t0 {- x! c( V& l T* N" W
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,请同时添加以上两项。