1

我需要帮助才能用 SQL 编写此代码:

我有一张桌子,我想用字符 A、B 或 C 选择否,但如果我有相同的 A 和 B,否我只想显示 B,否则我需要显示所有。

伪代码:

SELECT *
  FROM Table1
  WHERE IF EXISTS (Char = A and Char = B)
    THEN Char IN (B, C)
    ELSE Char IN (A, B, C)

例子:

表格1

ID  No     Char
1   10     A
2   10     B
4   10     C
5   11     A
6   11     D
7   12     C

我想要结果:

ID  No     Char
2   10     B
4   10     C
5   11     A
7   12     C

我需要什么是否足够清楚?

4

1 回答 1

3
select t1.Id, t1.No, t1.Ch from Table1 t1
where t1.Ch IN ( 'B', 'C')
UNION
select t1.Id, t1.No, t1.Ch from Table1 t1
where t1.Ch ='A' 
and not exists (select null from Table1 t2 where t2.No = t1.No  and t2.Ch='B')

我在 Ch 中更改了 Char,因为 Char 可能是保留的关键字...

用 Sql Server 测试,但我认为查询是 ANSI SQL

http://sqlfiddle.com/#!3/f2145/12

或者

select t1.Id, t1.No, t1.Ch from Table1 t1
where t1.Ch IN ( 'B', 'C')
OR (t1.Ch ='A'
and not exists (select null from Table1 t2 where t2.No = t1.No  and t2.Ch='B'))
于 2012-05-31T15:49:11.487 回答