→ odj:補充一下自己是用mysql 10/31 01:52
※ 編輯: odj 來自: 140.138.32.45 (10/31 08:21)
最近在寫一個交集的語法,覺得自己寫的不是很好,因此想請教一下是否有更好的寫法
我有一個資料表(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
A server有的w_id值是3,B server有3,4,5,C server有3,4,5
今天我想取得的是ABC三台server都有的w_id值,以上表來說,就是3
我寫了一段sql如下:
SELECT DISTINCT w_id
FROM `table1`
WHERE `w_id`
IN (
SELECT w_id
FROM `table1`
WHERE `server` = 'A'
)
AND `w_id`
IN (
SELECT w_id
FROM `table1`
WHERE `server` = 'B'
)
AND `w_id`
IN (
SELECT w_id
FROM `table1`
WHERE `server` = 'C'
)
最後執行結果 的確能得到w_id值等於3 但這種寫法一但server增加 (比如又加入D.E)
我的子查詢也要繼續增加
最後整個查詢語句變的非常龐大 不知道有沒有更好的方式
懇請不吝賜教,謝謝~!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.116.146