Skip to content

Instantly share code, notes, and snippets.

@toaco
Last active December 15, 2017 03:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toaco/f3821f69ad86889abb43878ac2b4978d to your computer and use it in GitHub Desktop.
Save toaco/f3821f69ad86889abb43878ac2b4978d to your computer and use it in GitHub Desktop.
Oracle9i - Why this left join return empty result ?
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