看板 Database 關於我們 聯絡資訊
以下為 T-SQL declare @t1 table ( sid varchar(1), sname varchar(20) ) declare @t2 table ( gid int, sid varchar(1) ) insert into @t1 values ('A','David') insert into @t1 values ('B','Scott') insert into @t1 values ('C','Marry') insert into @t2 values (1,'A') insert into @t2 values (2,'A') insert into @t2 values (2,'B') insert into @t2 values (3,'A') insert into @t2 values (3,'B') insert into @t2 values (3,'C') insert into @t2 values (4,'B') insert into @t2 values (4,'C') select gid from @t2 group by gid having sum(case when sid in ('A','B','C') then 1 else -1 end) = 3 ^^^^^^^^^^^ 要查的 PERSON_ID ^ 要查的筆數 ※ 引述《ClubT (風)》之銘言: : ※ 引述《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這樣的概念 : : 資料可能會有上百萬筆 : : 非常謝謝您的指教 : 如果你要找的TEAM只會有2個人的話 : select TEAM_ID from TableB group by TEAM_ID having count(*)=2 and : Min(PERSON_ID)=1001 and Max(PERSON_ID)=1002 : 雖然不確定Oracle的語法是不是這樣...但應該差不多 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.120.164 ※ 編輯: smlboby 來自: 115.43.120.164 (10/11 19:16)