作者danielguo (Daniel Guo)
看板Database
标题Re: [SQL ] 交集问题
时间Mon Oct 31 03:10:52 2011
※ 引述《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;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 24.19.233.135
1F:推 odj:可能我表达的不好让你误会了 我不是要W_ID值有几个SERVER 10/31 08:12
2F:→ odj:而是像A有的w_id值是3 B有3,4,5 C有3,4,5 那ABC三者都有的 10/31 08:14
3F:推 odj:的w_id值就是3 我想要抓出的是这个值 10/31 08:18
4F:推 odj:抱歉了 还是感谢你的帮忙 10/31 08:22
5F:推 cutecpu:推 d 大解法 10/31 23:08