Tsql SQL-检索不同的ID
我有一个包含以下数据的表格:Tsql SQL-检索不同的ID,tsql,Tsql,我有一个包含以下数据的表格: 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 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
我该怎么做?试试这个:
select distinct ID
from TableName
where (Attribute = 'MM' or Code = 'GC')
and not (Attribute = 'MM' AND Code = 'GC')
SELECT ID, NAME
FROM <YOUR-TABLE-NAME>
WHERE
(ATTRIBUTE = 'MM' AND CODE <> 'GC') OR
(ATTRIBUTE <> 'MM' AND CODE = 'GC') ;
试试这个:
select distinct ID
from TableName
where (Attribute = 'MM' or Code = 'GC')
and not (Attribute = 'MM' AND Code = 'GC')
SELECT ID, NAME
FROM <YOUR-TABLE-NAME>
WHERE
(ATTRIBUTE = 'MM' AND CODE <> 'GC') OR
(ATTRIBUTE <> 'MM' AND CODE = 'GC') ;
选择ID、NAME
从…起
哪里
(属性='MM'和代码'GC')或
(属性'MM'和代码='GC');
选择不同的Id、名称
来自tbl?
哪里
(属性='MM'或代码='GC')
而不是(属性='MM'和代码='GC')
结果:
ID NAME
2 ZZ
3 AA
由于第二行数据,这不会返回1吗?@AakashM:是的,我想你是对的。我没有注意到。我认为@Barry的答案更好。
(
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'
)