是否有可能找到留下外連接,右外連接和完全外連接返回的記錄數。給定左手邊桌和右手邊桌的記錄數和匹配記錄。找到左外連接,右外連接和全外連接返回的記錄數
我想關聯它們之間的關係。我已經嘗試了兩個輸入樣本數據的表格。無法獲得他們之間的任何關係。 如果我知道左手邊桌中不匹配條目的數量。我將這個數字添加到匹配的記錄中,然後我將得到左邊的外部連接輸出。如果我知道右手邊的不匹配記錄的數量,那麼我會將該數字添加到匹配的記錄中。它會給我們正確的外部連接輸出。
是否有可能不知道不匹配的記錄。我們可以找到留下外連接,右外連接和完全外連接返回的記錄數。
CREATE table table1(
id integer,
name varchar(40)
);
CREATE table table2(
id integer,
name varchar(40)
);
insert into table1(id,name)values(1,'ABC');
insert into table1(id,name)values(2,'DEF');
insert into table1(id,name)values(3,'GHI');
insert into table1(id,name)values(4,'JKL');
insert into table1(id,name)values(5,'JKL');
insert into table1(id,name)values(6,'JKL');
insert into table2(id,name)values(2,'ABC');
insert into table2(id,name)values(2,'ABC');
insert into table2(id,name)values(1,'ABC');
insert into table2(id,name)values(1,'ABC');
insert into table2(id,name)values(3,'ABC');
insert into table2(id,name)values(3,'ABC');
insert into table2(id,name)values(4,'ABC');
insert into table2(id,name)values(4,'ABC');
insert into table2(id,name)values(5,'ABC');
insert into table2(id,name)values(5,'ABC');
insert into table2(id,name)values(11,'ABC');
insert into table2(id,name)values(12,'ABC');
insert into table2(id,name)values(13,'ABC');
insert into table2(id,name)values(14,'ABC');
select count(*) from table1;//6
select count(*) from table2; //14
select count(*) from table1 inner join table2
on table1.id=table2.id; //10
select count(*) from table1 left outer join table2
on table1.id=table2.id;//11
select count(*) from table1 right outer join table2
on table1.id=table2.id;//14
select count(*) from table1 full outer join table2
on table1.id=table2.id;//15
//Unmatched records`enter code here`
select count(*) from table1 left outer join table2
on table1.id=table2.id
where table2.id is null;//1
select count(*) from table1 right outer join table2
on table1.id=table2.id
where table1.id is null;//4
你需要它在一個單一的查詢或三個不同的查詢? –
我不明白這個問題。您正在顯示使用不同連接類型獲得的記錄數量,並且還顯示如何計數不匹配的記錄。那麼你還在尋找什麼? –
獲取這些數字的唯一方法是運行JOIN查詢。運行FULL JOIN以立即獲得全部3個。 – Serg