[SQL ] 資料 join 的方式

看板Database (資料庫)作者 (小皮)時間2年前 (2022/09/12 15:45), 編輯推噓1(103)
留言4則, 2人參與, 2年前最新討論串1/1
(針對 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.235.255.55 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1662968744.A.CD9.html

09/12 17:22, 2年前 , 1F
where not exists
09/12 17:22, 1F

09/16 18:48, 2年前 , 2F
Not in,no exists,left join都能做到
09/16 18:48, 2F

09/16 18:49, 2年前 , 3F
是in,no exists,left join才對
09/16 18:49, 3F

09/16 18:52, 2年前 , 4F
忽略上面 用Not in,no exists,left join這三個
09/16 18:52, 4F
文章代碼(AID): #1Z7kEepP (Database)
文章代碼(AID): #1Z7kEepP (Database)