我有一张包含以下数据的表格:
ID NAME ATTRIBUTE CODE
=============================
1 XX MM GC
1 XX ST GC
2 ZZ LL GC
2 ZZ ST GC
3 AA MM PC
我需要表格中的ID
,其名称包含MM
属性或GC
代码,但不包含两者。与查询一样,应该仅检索ID
数字2和3而不是1。
我该怎么做?
答案 0 :(得分:2)
Select Id, Name
From #t
Where (Attribute = 'MM' Or Code = 'GC')
And Id Not In (Select Id From #t
Where (Attribute = 'MM' And Code = 'GC'))
答案 1 :(得分:1)
select distinct T1.ID,
T1.NAME
from T as T1
where (T1.ATTRIBUTE = 'MM' or T1.CODE = 'GC') and
not exists (select *
from T as T2
where T1.ID = T2.ID and
T2.Attribute = 'MM' and
T2.CODE = 'GC')
结果:
ID NAME
2 ZZ
3 AA
答案 2 :(得分:0)
试试这个:
select distinct ID
from TableName
where (Attribute = 'MM' or Code = 'GC')
and not (Attribute = 'MM' AND Code = 'GC')
答案 3 :(得分:0)
试试这个:
SELECT ID, NAME
FROM <YOUR-TABLE-NAME>
WHERE
(ATTRIBUTE = 'MM' AND CODE <> 'GC') OR
(ATTRIBUTE <> 'MM' AND CODE = 'GC') ;
答案 4 :(得分:0)
选择不同的Id,名称 从tbl? 哪里 (attribute ='MM'或code ='GC') 而不是(attribute ='MM'和code ='GC')
答案 5 :(得分:0)
(
SELECT ID, NAME FROM TableName WHERE CODE = 'GC'
EXCEPT
SELECT ID, NAME FROM TableName WHERE ATTRIBUTE = 'MM'
)
UNION
(
SELECT ID, NAME FROM TableName WHERE ATTRIBUTE = 'MM'
EXCEPT
SELECT ID, NAME FROM TableName WHERE CODE = 'GC'
)