推 odj:屋喔 受益匪淺 非常感謝~! 10/31 13:52
※ 引述《danielguo (Daniel Guo)》之銘言:
: ※ 引述《odj (***ˋ( ̄  ̄)》之銘言:
: : 最近在寫一個交集的語法,覺得自己寫的不是很好,因此想請教一下是否有更好的寫法
: : 我有一個資料表(table1)如下:
: : id w_id server
: : 1 3 A
: : 2 3 B
: : 3 4 B
: : 4 5 B
: : 5 3 C
: : 6 4 C
: : 7 5 C
: : 今天我想取得的是ABC三台server共有的w_id值,以上表來說,就是3
: 計算每個 w_id 有幾個 server
: (假設 (w_id, server) 會重複, 不重複用 COUNT(*) 便可)
: SELECT `w_id`, COUNT(DISTINCT `server`) AS `count`
: FROM `table1`
: WHERE `server` IN ('A', 'B', 'C')
: GROUP BY `w_id`
: HAVING `count` = 3;
推 odj:可能我表達的不好讓你誤會了 我不是要W_ID值有幾個SERVER 10/31 08:12
→ odj:而是像A有的w_id值是3 B有3,4,5 C有3,4,5 那ABC三者都有的 10/31 08:14
推 odj:的w_id值就是3 我想要抓出的是這個值 10/31 08:18
推 odj:抱歉了 還是感謝你的幫忙
這兩個問題是等義的, 例如上面的例子, A:3, B:345, C:345
也就是 3:ABC, 4:BC, 5:BC
server w_id
A 3
B 3
B 4
B 5
C 3
C 4
C 5
也就是
server w_id
A 3
B 3
C 3
B 4
C 4
B 5
C 5
找 A, B, C 這三個 server 都有的 w_id 列表,
等於找一個 w_id 列表, 其中的每個 w_id 都有 A, B, C 這三個 server
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.19.233.135
※ 編輯: danielguo 來自: 24.19.233.135 (10/31 12:47)