选择问题

use*_*618 4 sql select sql-server-2005 relational-algebra

我有一个包含两列的行的表

A 1
A 2
B 1
B 3
C 1
C 2
C 3
Run Code Online (Sandbox Code Playgroud)

我想从这个只得到这个ID(a,b或c)只有2行值1,2,所以从这个表我得到一个,因为b没有行2,c有行用1和b,但也有c行...

获取此行的最简单方法是什么?

Mar*_*ith 6

SELECT col1
FROM YourTable
GROUP BY col1
HAVING COUNT(DISTINCT col2) =2 AND MIN(col2) = 1 AND MAX(col2) = 2
Run Code Online (Sandbox Code Playgroud)

或者另一种可扩展到2个以上数字的方式

SELECT col1
FROM   yourtable
GROUP  BY col1
HAVING MIN(CASE
             WHEN col2 IN ( 1, 2 ) THEN 1
             ELSE 0
           END) = 1
       AND COUNT(DISTINCT col2) = 2 
Run Code Online (Sandbox Code Playgroud)