iT邦幫忙

1

LEFT JOIN 後有辦法去除所有重複的資料嗎

將A與B資料夾Left join後
想將A表的欄位A2和B表欄位B2資料相同的都過濾掉
只要資料有重複"重複的資料一筆都不保留"

EX: 尋找A1欄位01的資料
目的是A1和B1兩編號先結合資料表
(A left join B
on A.A1 = B.B1)
尋找條件(A1='$A1' and A3=0)
後顯示資料表的資料
但若資料表的欄位A2和欄位B2相同則不顯示出來....
https://ithelp.ithome.com.tw/upload/images/20200429/20125352mfcp3PUmDP.jpg
因A2 B2的內容重複而不顯示的資料:
第一筆資料重複不顯示
第三筆和第四筆重複(9481) 皆不顯示
第十八筆和第十九筆重複(6134)皆不顯示

$sql="select A1,A2,B2,B3
from A
left join B
on A.A1 = B.B1
where (A1='$A1' and A3=0 ) and A2 <> B2";
嘗試尋找A2 和B2不相同的資料,但A2若和B2相同還是至少會顯示一筆資料出來
EX:重複的三和四會顯示其中一筆,十八和十九也是....

用GROUP BY HAVING也至少會保留一筆重複資料.....
若希望顯示兩個欄位間完全不重複的資料應該怎麼更改才好.....

又是貼圖的.
Mangma iT邦新手 5 級 ‧ 2020-04-29 22:34:21 檢舉
對不起...
你還是把table 結構跟資料都完整貼出來, 還有想達成的結果.
那一堆自言自語的, 還有 '$A1' 這種的就是增加模糊度的.
盡量簡單清楚表達,其實能夠把需求講出來,SQL就幾乎寫出來了.

1 個回答

3
rogeryao
iT邦大師 1 級 ‧ 2020-04-29 22:38:59
最佳解答
CREATE TABLE A(A1 nvarchar(10),A2 int);
insert into A
values ('01',10032),
('01',540),
('01',9481),
('01',1235),
('01',10034),
('01',6659),
('01',6134);
CREATE TABLE B(B1 nvarchar(10),B2 int);
insert into B
values ('01',10032),
('01',3684),
('01',1500),
('01',9481),
('01',10031),
('01',6134),
('01',6666);
select *
from A
full outer join B on A.A1=B.B1 and A.A2=B.B2
where (A.A2 is null
or B.B2 is null)

Demo Update

以下未測

select *
from A
full outer join B on A.A1=B.B1 and A.A2=B.B2
where (A.A2 is null
or B.B2 is null)
and (A.A1='$A1' and A.A3=0)
Mangma iT邦新手 5 級 ‧ 2020-04-29 23:35:40 檢舉

剛去GOOGLE下
full outer join返回AB的所有紀錄不論條件
然後
WHERE 1 = 1 永真
欄位 is null 是判斷欄位是否為空

A先和B完全連結,然後將A2=B2相同的疊上
在判斷沒有空值的欄位顯示的意思嗎???

因為目前已經有
A left join B
on A.A1 = B.B1
在連接不知道能不能再加
A full outer join B
on A.A2=B.B2

同時有要符合A1=$A1 and A3=0的條件在
嘗試了下
$sql="select A1,A2,B2,B3
from A
left join B
on A.A1 = B.B1
where 1=1 and(A1='$A1' and A3=0 )
and A.A2 is null
or B.B2 is null ";
因為要先將A1和B1結合在一起才開始照條件選擇
大概沒辦法將A2和B2合在一起做排除ORZ

大概的目的是
A1和B1兩編號先結合
(A left join B
on A.A1 = B.B1WHERE A1=$A1)
尋找條件(A1='$A1' and A3=0)
後顯示資料表的資料
但若資料表的欄位A2和欄位B2相同則不顯示出來....
沒有將A3顯示出來不好意思,原本是打算弄個簡易的資料表問的
結果害你還要一個一個輸入建出來ORZ

Mangma iT邦新手 5 級 ‧ 2020-04-30 00:54:15 檢舉

謝謝大大的幫忙,測了幾十個號碼對照是無誤
困擾很久了,一直沒成功,周圍也沒有會的人
非常感謝

我要發表回答

立即登入回答