选择查询以获得那些结果,其中对于第3列的每个唯一值,第2列具有val1和val2

时间:2013-09-12 12:58:25

标签: mysql

MEMO    TYPE    ID

2442    11  52
33658   4   52
823     6   56
825     4   56
826     7   56
85      4   57
3298    7   57
87      4   141
377     7   141
88      4   142
378     7   142
98      1   143
99      2   143
194     7   143
7586    5   143
1451    4   143
7781    6   143
3252    4   167
3249    6   167
3915    7   167
13666   5   167
115     4   168
9253    9   168
9254    10  168
138     1   194
139     2   194
1951    4   194
8650    7   194
8191    6   197
8192    7   197
9687    8   197
9930    9   197

我需要从上表中选择那些记录,其中列'ID'中的每个唯一值,列'TYPE'都具有值6和7。 此选择查询的结果如下:

MEMO    TYPE    ID
 823    6   56
 826    7   56
7781    6   143
 194    7   143
3249    6   167
3915    7   167
8191    6   197
8192    7   197

我希望这些数据不会太多。

1 个答案:

答案 0 :(得分:1)

select t.* 
from your_table t
inner join
(
    select id, min(type) as mint, max(type) as maxt
    from your_table
    where type in (6,7)
    group by id
    having count(distinct type) = 2
) x on x.id = t.id and t.type in (x.maxt,x.mint)

SQLFiddle demo