作者odj (***ˋ( ̄  ̄)
站内Database
标题[SQL ] 交集问题
时间Mon Oct 31 01:49:11 2011
最近在写一个交集的语法,觉得自己写的不是很好,因此想请教一下是否有更好的写法
我有一个资料表(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
1F:→ odj:补充一下自己是用mysql 10/31 01:52
※ 编辑: odj 来自: 140.138.32.45 (10/31 08:21)