台灣最大程式設計社群網站
線上人數
1067
 
會員總數:242482
討論主題:187519
歡迎您免費加入會員
討論區列表 >> Oracle >> SELECT 2個Tabel 如何移除重複值
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
SELECT 2個Tabel 如何移除重複值
價值 : 50 QP  點閱數:481 回應數:9

樓主

pagu
門外漢
0 1
14 3
發送站內信

已配對
班級 名字 學號
甲 a 001
甲 b 002
甲 d 004

B Tabel
班級 名字 學號
甲 001
甲 002
甲 003
甲 004
甲 005

兩個Tabel要篩選出未使用的學號
該如何撰寫?
SELECT distinct 班級,名字,學號
FROM A Tabel
Where 班級='甲'
UNION
SELECT distinct 班級,名字,學號
FROM B Tabel
Where 班級='甲'

可顯示出
班級 名字 學號
甲 a 001
甲 b 002
甲 d 004
甲 001
甲 002
甲 003
甲 004
甲 005

但無法排除已使用的學號,求解∼

搜尋相關Tags的文章: [ SELECT ] , [ 2個Tabel ] , [ 重複 ] , [ 移除重複值 ] ,
本篇文章發表於2018-04-26 08:11
== 簽名檔 ==
菜鳥會變老鳥
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Hsu,Harry
檢舉此回應
請參閱
http://sqlqna.blogspot.tw/2013/10/blog-post_9.html
本篇文章回覆於2018-04-26 11:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

Hsu,Harry
檢舉此回應
沒看清楚,以為只是要簡單的剔除重覆值。但看完題意仍搞不清版大想要的東西。

本篇文章回覆於2018-04-26 13:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

pagu
檢舉此回應
抱歉抱歉!
我重新說明一次:
已配對學號
班級 姓名 學號 分數
甲 小明 1001 90
甲 阿花 1003 90
甲 小規 1005 30

未配對學號
班級 姓名 學號
甲 小明 1001
甲 1002
甲 阿花 1003
甲 1004
甲 小規 1005
甲 1006

需顯示內容
班級 姓名 學號
甲 小明 1001
甲 阿花 1003
甲 小規 1005
甲 1002
甲 1004
甲 1006

目前我只會合併,但無法移除重複的值
SELECT distinct 班級,名字,學號
FROM A Tabel
Where 班級='甲'
UNION
SELECT distinct 班級,名字,學號
FROM B Tabel
Where 班級='甲'

變成這樣
班級 姓名 學號
甲 小明 1001
甲 阿花 1003
甲 小規 1005
甲 小明 1001
甲 1002
甲 阿花 1003
甲 1004
甲 小規 1005
甲 1006

本篇文章回覆於2018-04-27 02:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

pagu
檢舉此回應
要兩個資料表合併,同時顯示並將兩個資料表合併後已使用的學號與未使用的後重複值排除
要顯示「已使用的學號+未使用的學號」
本篇文章回覆於2018-04-27 02:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

P陳
檢舉此回應
這是你要的嗎?



查詢1
SELECT 資料表2.班級, 資料表2.姓名, 資料表2.學號
FROM 資料表2 LEFT JOIN 資料表1 ON 資料表2.學號 = 資料表1.學號
WHERE (((資料表1.學號) Is Null));

查詢2
SELECT 班級,姓名,學號 FROM 資料表1
union
SELECT 班級,姓名,學號 FROM 資料表2 order by 學號


本篇文章回覆於2018-04-27 06:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

pagu
檢舉此回應
樓上好像有點正解的感覺,那如果是下面這種呢?
未配對學號,名字是空白的!
已配對學號
班級 姓名 學號 分數
甲 小明 1001 90
甲 阿花 1003 90
甲 小規 1005 30

未配對學號
班級 姓名 學號
甲 1001
甲 1002
甲 1003
甲 1004
甲 1005
甲 1006
本篇文章回覆於2018-04-27 07:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Hsu,Harry
檢舉此回應
借用 P陳 資料,作法

本篇文章回覆於2018-04-27 08:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

P陳
檢舉此回應
#6
未配對學號,名字是空白的!
已配對學號
的結果是什麼????

看起來 我給範您還沒有試,又天馬行空的想題目出來了。
如果您有試只要改一下 加一下 Where 就解決了


目前您還是學生嗎? 加油
不是的話請去補習班上個課吧!



本篇文章回覆於2018-04-27 15:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

風燭殘年
捐贈 VP 給 風燭殘年 檢舉此回應
你要的是挑選不是合併,一開始用 UNION 方向就錯了

TableB LEFT JOIN TableA 之後

選取 A.名字為 空白/NULL 時就會列出未使用學號的資料
選取 A.名字不為 空白/NULL 時就會列出已使用學號的資料

自己動手試一下肯定會加深自己的印象


SQL LEFT JOIN
本篇文章回覆於2018-04-27 22:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.