如何选择仅返回c列中没有“1”的键的行

时间:2015-01-11 22:13:35

标签: sql tsql

标题令人困惑我知道,我只是不确定如何说出来。无论如何,让我用表格来描述:

| 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的行。

4 个答案:

答案 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子句的附加条件,否则您的问题本身就无法解决。