在偶然一次執行Oracle 9i的left outer join查詢時,發現了一些匪夷所思的問題,在此貼出來和大家討論一下。
先創建一些表和記錄來模擬當時的情況:
create table temp_test1
(
a number(10)
);
INSERT INTO temp_test1 VALUES(1);
INSERT INTO temp_test1 VALUES(2);
INSERT INTO temp_test1 VALUES(3);
INSERT INTO temp_test1 VALUES(4);
COMMIT;
create table temp_test2
(
b number(10),
c varchar2(2)
);
INSERT INTO temp_test2 VALUES(1, ''a'');
INSERT INTO temp_test2 VALUES(2, ''a'');
INSERT INTO temp_test2 VALUES(3, ''a'');
INSERT INTO temp_test2 VALUES(5, ''b'');
COMMIT;
好了,我們來執行一個左外連接:
--最初想得到的結果
SELECT a, b, c
FROM temp_test1 LEFT OUTER JOIN temp_test2 ON temp_test1.a=temp_test2.b;
結果如下:
A B C 1