如何在列中选择值A或选择A和B而不选择B?

时间:2019-07-17 13:59:55

标签: sql sql-server

我有一张桌子A:

column1     column2
name1       A
name1       B

在第1列中,名称1 在第2列中可以有2个值: A B

我要这样选择:

select *
from tableA
where ??

条件是当column2等于A A和B,但不等于B 时。这可能吗?

查询条件下的期望值:

column1     column2
name1       A

column1     column2
name1       A
name1       B

我不想要的东西:

column1     column2
name1       B

2 个答案:

答案 0 :(得分:2)

您的规格是:

select t.*
from t
where t.column2 = 'A' or
      exists (select 1 from t t2 where t2.column1 = t.column1 and t2.column2 = 'A');

实际上可以简化为:

select t.*
from t
where exists (select 1 from t t2 where t2.column1 = t.column1 and t2.column2 = 'A');

如果只需要具有此属性的名称,则:

select distinct t.column
from t
where t.column1 = 'A';

答案 1 :(得分:1)

您可以使用exists

select *
  from tableA a
 where exists ( select 1 from tableA where column1 = a.column1 and column2 = 'A' );

对于当前情况,即使不添加column1 = a.column1 and部分,您也可以获得预期的结果。

memory that is not backed by a file, and is set to zero