如果我有这样的表名为" table"
+--------------+
| id | c1 | c2 |
+--------------+
| 1 | a | 0 |
| 2 | b | 1 |
| 3 | c | 1 |
| 4 | d | 2 |
| 5 | e | 2 |
| 6 | f | 3 |
| 7 | g | 4 |
| 8 | h | 5 |
+--------------+
我想选择' c1' FROM' table'在哪里' id'不在' c2' 2次
答案 0 :(得分:7)
SELECT * FROM table WHERE id NOT IN
(SELECT c2 FROM table GROUP BY c2 HAVING Count(c2) = 2)
答案 1 :(得分:1)
完全没有C2的跳过ID:
SELECT d.id, d.c1, g.gcount
FROM
(
SELECT c2 as gc2, COUNT(*) as gcount
FROM @data
GROUP BY c2
) g
INNER JOIN @data d ON d.id = g.gc2 AND gcount != 2
<强>输出:强>
id | c1 | gcount
3 | c | 1
4 | d | 1
5 | e | 1
包含不在C2中的ID:
SELECT d.id, d.c1, ISNULL(g.gcount, 0) as gcount
FROM
(
SELECT c2 as gc2, COUNT(*) as gcount
FROM @data
GROUP BY c2
) g
RIGHT JOIN @data d ON d.id = g.gc2
WHERE gcount IS NULL OR g.gcount != 2
<强>输出:强>
id c1 gcount
3 c 1
4 d 1
5 e 1
6 f 0
7 g 0
8 h 0
答案 2 :(得分:0)
select t.*
from table t
left outer join (
select c2, count(*) as Count
from table
group by c2
) tc on t.id = tc.c2
where Count is null or Count < 2
答案 3 :(得分:0)
select
t1.c1
from
t t1,
t t2
where
t1.id = t2.c2
group by
t1.c1
having
count(t2.c2) != 2;