返回所有更新ID不匹配当前更新的ATM

时间:2015-06-18 09:01:37

标签: sql sql-server

我有2个表,一个有ATM ID,另一个是从ATM请求更新。

我想在(115,116,117)中选择所有没有updateId更新请求的ATM ID

我一直在考虑这样的事情

SELECT ATMId from tableWithUpdates where ATMUpdateApplicationId not in(115)但是,它会以id 28返回atm,即使它有UpdateApplicationId = 115的更新请求,我也不知道为什么。有什么帮助吗?

表格如下:

表1:

  

int autoincrement ATMId,VARCHAR(200)ATMName,

表ATMUpdatesRequest:

  

int autoincrement id,DateTime created,int ATMUpdateApplicationId,   int ATMId

重点是找到每个ATMId都没有请求ATMUpdateApplicationId在115-117范围内。

从评论中添加:

由于ATMId将有其他更新,我仍然会返回它,即使它没有id = 115的更新。如果它有3个数字中的任何一个,我根本不需要返回该ATMId。

SQLFiddle的链接:

http://sqlfiddle.com/#!9/3e995

1 个答案:

答案 0 :(得分:0)

您需要使用以下查询来避免该范围内的ATMUpdateApplicationId

   SELECT ATMId from tableWithUpdates where ATMUpdateApplicationId not in(115,116,117)

或者

 SELECT ATMId from tableWithUpdates where ATMUpdateApplicationId NOT BETWEEN 115 AND 117

<强>更新

如果你想选择除了ATMid属于115,116或117以外的ID,那么你可以这样做

SELECT ATMID FROM ATMUpdatesRequest
WHERE ATMID NOT IN(
SELECT ATMID from ATMUpdatesRequest 
WHERE ATMUpdateApplicationId NOT IN(115,116,117))