标题令人困惑我知道,我只是不确定如何说出来。无论如何,让我用表格来描述:
| key | column b | column c |
|-----|----------|----------|
| a | 13 | 2 |
| a | 14 | 2 |
| a | 15 | 1 |
| b | 16 | 2 |
| b | 17 | 2 |
我想选择列c不等于1的所有键,因此选择将导致只返回键' b'
为了澄清,我的结果集不应该包含具有行c的行,其中列c设置为1.因此,我希望sql查询返回满足前一个语句的键。
让我的问题尽可能清楚。从上面的表中,我想要的一些sql语句返回的结果集是一个包含[{b}]的结果集,它基于键' a'至少有一行,其中列c等于1,而键' b' c列中没有任何包含1的行。
答案 0 :(得分:0)
SELECT t.[Key]
FROM TableName t
WHERE NOT EXISTS (SELECT 1
FROM TableName
WHERE t.[key] = [key]
AND ColumnC = 1)
GROUP BY t.[Key]
答案 1 :(得分:0)
SELECT KEY
FROM WhateverYourTableNameIs
WHERE c <> '1'
答案 2 :(得分:0)
我会使用group by
和聚合:
select [key]
from table t
group by [key]
having sum(case when c = 1 then 1 else 0 end) = 0;
having
子句计算具有c = 1
的行数。 = 0
表示给定密钥没有这样的行。
答案 3 :(得分:0)
基于其他评论的详细说明:
您要求ALL keys where column c doesn't equal 1
。这完全我建议的查询会给你什么。问题so the SELECT will result in returning only key 'b'
的另一部分含糊不清。 问题的问题将为您提供A 和 B列的结果。您的问题中没有任何内容可以限制结果集。您需要WHERE子句的附加条件,否则您的问题本身就无法解决。