我如何 select 行,其中只有 return 键在 c 列中没有“1”
How do I select rows where only return keys that don't have '1' in column c
我知道标题令人困惑,我只是不确定如何表达。无论如何,让我用 table:
来描述
| key | column b | column c |
|-----|----------|----------|
| a | 13 | 2 |
| a | 14 | 2 |
| a | 15 | 1 |
| b | 16 | 2 |
| b | 17 | 2 |
我想 select 列 c 不等于 1 的所有键,因此 select 将导致 return 仅键 'b'
澄清一下,我的结果集不应包含具有 c 列设置为 1 的行的键。因此,我想要一个 sql 查询,该查询将 return 满足的键前面的语句。
为了让我的问题尽可能清楚。从上面的 table 中,我想要 return 由一些 sql 语句编辑的是一个包含 [{b}] 的结果集,基于这样一个事实,即键 'a' 至少有c 列等于 1 的一行,而键 'b' 在 c 列中没有包含 1 的任何行。
SELECT t.[Key]
FROM TableName t
WHERE NOT EXISTS (SELECT 1
FROM TableName
WHERE t.[key] = [key]
AND ColumnC = 1)
GROUP BY t.[Key]
SELECT KEY
FROM WhateverYourTableNameIs
WHERE c <> '1'
我会使用 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
表示给定键没有这样的行。
根据其他评论的阐述:
您要求 ALL keys where column c doesn't equal 1
。那就是 完全 我建议的查询将为您提供的内容。您问题的另一部分 so the SELECT will result in returning only key 'b'
含糊不清。 as asked 问题将为您提供 A 和 B 列的结果。您的问题中没有任何限制结果集的内容。您要么需要 WHERE 子句的附加条件,要么您的问题本质上无法回答。
我知道标题令人困惑,我只是不确定如何表达。无论如何,让我用 table:
来描述
| key | column b | column c |
|-----|----------|----------|
| a | 13 | 2 |
| a | 14 | 2 |
| a | 15 | 1 |
| b | 16 | 2 |
| b | 17 | 2 |
我想 select 列 c 不等于 1 的所有键,因此 select 将导致 return 仅键 'b'
澄清一下,我的结果集不应包含具有 c 列设置为 1 的行的键。因此,我想要一个 sql 查询,该查询将 return 满足的键前面的语句。
为了让我的问题尽可能清楚。从上面的 table 中,我想要 return 由一些 sql 语句编辑的是一个包含 [{b}] 的结果集,基于这样一个事实,即键 'a' 至少有c 列等于 1 的一行,而键 'b' 在 c 列中没有包含 1 的任何行。
SELECT t.[Key]
FROM TableName t
WHERE NOT EXISTS (SELECT 1
FROM TableName
WHERE t.[key] = [key]
AND ColumnC = 1)
GROUP BY t.[Key]
SELECT KEY
FROM WhateverYourTableNameIs
WHERE c <> '1'
我会使用 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
表示给定键没有这样的行。
根据其他评论的阐述:
您要求 ALL keys where column c doesn't equal 1
。那就是 完全 我建议的查询将为您提供的内容。您问题的另一部分 so the SELECT will result in returning only key 'b'
含糊不清。 as asked 问题将为您提供 A 和 B 列的结果。您的问题中没有任何限制结果集的内容。您要么需要 WHERE 子句的附加条件,要么您的问题本质上无法回答。