sql选择像联结表

时间:2012-01-12 22:14:58

标签: sql join

我有一个表,其中包含那些字段

mid , email
  1 , 'user_a@...'  
  2 , 'user_b@...' 
  3 , 'user_c@...' 

然后是另一个包含以下字段/值的表

tid, name  
  1, t_a
  2, t_b 
  3, t_c 

和其他表

tid, mid
  1, 1
  1, 2
  1, 3
  2, 2
  2, 3
  3, 1
  3, 2

如何让所有拥有't_a'和't_b'的用户...我需要返回

user_a,
user_c

因为user_b不包含t_a

1 个答案:

答案 0 :(得分:2)

SELECT e.email
    FROM emails e
        INNER JOIN email_tags et
            ON e.mid = et.mid
        INNER JOIN tags t
            ON et.tid = t.tid
    WHERE t.name IN ('t_a', 't_b')
    GROUP BY e.email
    HAVING COUNT(DISTINCT t.name) = 2