2013-12-12 62 views
2

我是一个业余的SQL脚本,我需要你的帮助。我有以下查询给我4行。选择与标准不同的字段

SELECT A.Id, 
     A.InterfaceId, 
     I.DeviceId, 
     I.TypeId, 
     A.AnoType 
FROM I 
INNER JOIN A ON I.InterfaceId = A.InterfaceId 
INNER JOIN D ON I.DeviceId = D.DeviceId 
WHERE I.AccountId = '500' 
    AND D.UserId = '1000' 

此查询的结果是:

Id     InterfaceId       DeviceId     TypeId AnoType 
---------------------------------------------------------------------------------------------------- 
1216046 | C4BEB5D8-8749-4831-92F4-070CF58F7C81 | B0E8C423-1B01-4AD5-A383-B0E584E6176C | 1207 | -40 | 
1216047 | F00F87BD-F1B4-4DAD-801A-E022403831D5 | B0E8C423-1B01-4AD5-A383-B0E584E6176C | 1208 | -40 | 
1216329 | F00F87BD-F1B4-4DAD-801A-E022403831D5 | B0E8C423-1B01-4AD5-A383-B0E584E6176C | 1208 | -3 | 
1225762 | F00F87BD-F1B4-4DAD-801A-E022403831D5 | B0E8C423-1B01-4AD5-A383-B0E584E6176C | 1208 | -20 | 
---------------------------------------------------------------------------------------------------- 

我的问题是,我需要一个查询将返回他们的AnoType不是-3及其InterfaceId不具有行-3其他行中的AnoType的值。例如,在第三行中,AnoType是-3,所以我的查询应该只返回第一行而没有其他行。 任何帮助将不胜感激。

由于提前,

吉安

回答

1
SELECT A.Id, 
     A.InterfaceId, 
     I.DeviceId, 
     I.TypeId, 
     A.AnoType 
FROM I 
INNER JOIN A ON I.InterfaceId = A.InterfaceId 
INNER JOIN D ON I.DeviceId = D.DeviceId 
WHERE I.AccountId = '500' 
    AND D.UserId = '1000' 
    AND A.AnoType <> -3 
    AND A.InterfaceId NOT IN (SELECT InterfaceId 
          FROM A 
          WHERE AnoType = -3) 
+0

解决我的问题,感谢穆罕默德·阿里 – Kian

+0

@Kian没问题,很高兴它帮助:) –