Re: [SQL ] 如何找兩筆或以上的資料
※ 引述《greencha (greencha)》之銘言:
: 各位大哥大姐好, 小弟有一問題求教
: 假設我在TABLE A, 有以下兩筆資料, 假設叫 PERSON_ID
: PERSON_ID PERSON_NAME
: 1001 小明
: 1002 小華
: TABLE B中, 有各分組的資料
: TEAM_ID PERSON_ID
: 1 1000
: 1 1001
: 2 1001 *
: 2 1002 *
: 3 1001
: 3 1002
: 3 1003
: 3 1004
: 很明顯的, 我最後想要的結果是
: 只有小明和小華同組的 TEAM_ID是2
: 我想找到這個2, 要如何以比較單純的方法處理 (in Oracle)
: 單純的意思也是效能要好, 最好不要有FULL TABLE SCAN這樣的概念
: 資料可能會有上百萬筆
: 非常謝謝您的指教
這是取 TABLE A 名單內所有人之間的交集
select TEAM_ID
from B
where exists ( -- range scan
select 1
from A
where PERSON_ID = B.PERSON_ID )
group by TEAM_ID
having count(PERSON_ID) = 2 -- 共同組的人數 = 參與交集的總人數
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.7.176
※ 編輯: whatsAcc 來自: 114.36.7.176 (10/12 03:30)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):