不使用JOIN如何实现关键词SQL连接?2 w0 h( B9 r( t, _# K. G
这并非真正必要,但我认为通过这样做,我可以更好地理解联系的实际作用。 4 a" Q: K1 J3 }1 } D& l5 G + w+ X6 b7 g* D解决方案: # h9 U. v2 j' K( W& m4 P5 t; N
基本的INNER JOIN易于实现。6 M1 \6 i( V0 g D8 W
SELECT L.XCol,R.YColFROM LeftTable AS LINNER JOIN RightTable AS RON L.IDCol=R.IDCol;等效于: $ q4 s: u& [0 i t; K0 vSELECT L.XCol,R.YColFROM LeftTable AS L,RightTable AS RWHERE L.IDCol=R.IDCol;扩展到LEFT / RIGHT / FULL OUTER JOIN,你只需要正确列出不匹配的行和行NULL联合到以前INNER JOIN。4 ^; q: e3 f7 ~
添加左外连接: 1 X6 S) g4 X/ v$ L7 V0 bUNION 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)添加正确的外部连接:7 T- \6 w3 r& T6 n5 T
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,请同时添加以上两项。