-2
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

我希望这个数据不要太多。

4

1 回答 1

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 演示

于 2013-09-12T13:00:30.970 回答