【发布时间】:2018-02-23 11:33:11
【问题描述】:
我需要从表中返回行,其中ID 的所有行都具有CODE 的特定值。
例如:
TABLE: A
ID | NAME |CODE
-----------------
101 | XXX | A
101 | XXX | B
101 | XXX | C
101 | XXX | A
102 | XXX | B
103 | XXX | B
104 | XXX | D
104 | XXX | B
105 | XXX | A
105 | XXX | B
105 | XXX | D
105 | XXX | A
106 | XXX | B
107 | XXX | B
我需要只有代码B 的行。所以这是上表的预期输出:
ID | NAME |CODE
-----------------
102 | XXX | B
103 | XXX | B
106 | XXX | B
107 | XXX | B
这里ID101、104、105 也有代码 B,但它们不应该在我的输出中返回,因为它们还有其他代码。
我可以写什么查询来获得高于输出的结果?
我还需要确保这些值不存在于另一个表 B 中。所以,我需要添加
AND NOT EXISTS (SELECT 1 FROM TABLE B WHERE B.ID = A.ID)
B表有主键ID,B表中没有Code列。我只是使用此表来消除常见的 ID,因为我需要存在于表 A 而不是表 B 中的结果。
这是
中的示例数据Table : B
ID | Name | City | Department
------------------------------
101 | XXX | XXX | XX
104 | XXX | XXX | XX
105 | XXX | XXX | XX
107 | XXX | XXX | XX
在表 A 中,107 ID 在 Code 列中只有 B。但是,它存在于表 B 中,所以我不想在输出中返回这一行。
【问题讨论】:
-
嗨,以下答案都不能解决我的问题,谁能帮我解决这个问题?