Last active
December 15, 2017 03:14
-
-
Save toaco/f3821f69ad86889abb43878ac2b4978d to your computer and use it in GitHub Desktop.
Oracle9i - Why this left join return empty result ?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE TABLE_A | |
( | |
AID NUMBER(10) NOT NULL PRIMARY KEY | |
); | |
CREATE TABLE TABLE_B | |
( | |
BID NUMBER(12) NOT NULL PRIMARY KEY, | |
AID NUMBER(10) NOT NULL REFERENCES TABLE_A (AID) | |
); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (0); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (1); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (2); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (3); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (4); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (5); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (6); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (7); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (8); | |
INSERT INTO PTB_SUPER.TABLE_A (AID) VALUES (9); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (10, 0); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (11, 1); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (12, 2); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (13, 3); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (14, 4); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (15, 5); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (16, 6); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (17, 6); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (18, 7); | |
INSERT INTO PTB_SUPER.TABLE_B (BID, AID) VALUES (19, 7); | |
SELECT * | |
FROM TABLE_A; | |
-- 10 rows | |
SELECT * | |
FROM TABLE_B; | |
-- 10 rows | |
SELECT * | |
FROM TABLE_A | |
LEFT JOIN TABLE_B ON TABLE_B.AID = TABLE_A.AID; | |
-- 10 rows | |
SELECT * | |
FROM TABLE_A | |
LEFT JOIN TABLE_B ON TABLE_B.AID = TABLE_A.AID | |
WHERE TABLE_B.BID IS NULL; | |
-- 2 rows | |
SELECT * | |
FROM TABLE_A | |
LEFT JOIN TABLE_B ON TABLE_B.BID IS NULL; | |
-- 0 rows | |
SELECT * | |
FROM TABLE_A | |
LEFT JOIN TABLE_B ON TABLE_B.BID = ( | |
SELECT min(TABLE_B.BID) | |
FROM TABLE_B | |
WHERE TABLE_B.AID = TABLE_A.AID | |
); | |
-- 0 rows |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment