[SQL ] 資料 join 的方式

作者: superttl (ttl)   2022-09-12 15:45:42
(針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
資料庫名稱: postgresql
資料庫版本: postgresql 9.6
內容/問題描述:
請問有關 postgresql 9.6 SQL 的 join 方式
資料庫 schema 如下:
CREATE TABLE tbl1(
id1 char(10) not null,
id1_name char(12) not null,
ban char(8) not null,
ban_name char(60) not null
);
CREATE TABLE tbl2(
cust1 char(10) not null,
cust1_name char(12) not null,
cust2 char(8) not null,
cust2_name char(60) not null
);
insert into tbl1(id1,id1_name,ban,ban_name) values('A1','TEST1','12345678','COMPANY1');
insert into tbl1(id1,id1_name,ban,ban_name) values('A1','TEST1','23456789','COMPANY2');
insert into tbl1(id1,id1_name,ban,ban_name) values('A1','TEST1','34567890','COMPANY3');
insert into tbl2(cust1,cust1_name,cust2,cust2_name) values('A1','TEST1','12345678','COMPANY1');
insert into tbl2(cust1,cust1_name,cust2,cust2_name) values('A1','TEST1','23456789','COMPANY2');
我知道 inner join 的用法我可以得到兩個 table 相同的資料如下:
select * from tbl1 inner join tbl2 on id1 = cust1 and ban = cust2;
id1 id1_name ban ban_name cust1 cust1_name cust2 cust2_name
A1 TEST1 12345678 COMPANY1 A1 TEST1 12345678 COMPANY1
A1 TEST1 23456789 COMPANY2 A1 TEST1 23456789 COMPANY2
如果我只要取得tbl1有的資料在tbl2沒有我該如何下 sql 的 command
結果如下:
id1 id1_name ban ban_name cust1 cust1_name cust2 cust2_name
A1 TEST1 34567890 COMPANY3
作者: konkonchou (卡卡貓)   2022-09-12 17:22:00
where not exists
作者: moyasi (Simple Life)   2022-09-16 18:48:00
Not in,no exists,left join都能做到是in,no exists,left join才對忽略上面 用Not in,no exists,left join這三個

Links booklink

Contact Us: admin [ a t ] ucptt.com