我有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的链接:
答案 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))