返回更新 id 与当前更新不匹配的所有 ATM
Posted
技术标签:
【中文标题】返回更新 id 与当前更新不匹配的所有 ATM【英文标题】:Returning all ATM where id of update is not matching current update 【发布时间】:2015-06-18 09:01:37 【问题描述】:我有 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
重点是在 115-117 范围内找到没有请求 ATMUpdateApplicationId 的每个 ATMId。
从评论中添加:
由于 ATMId 会有其他更新,我仍然会返回它,即使它没有更新 id = 115。如果它有这 3 个数字中的任何一个,我根本不需要返回那个 ATMId。
SQLFiddle 的链接:
http://sqlfiddle.com/#!9/3e995
【问题讨论】:
如果您想从我们这里获得有意义的帮助,您确实需要在您的 2 个表的名称和列上发帖。 请与一些示例数据和预期输出分享您的表结构。在目前的形式中,问题很模糊 使用 SQLFiddle 链接更新 【参考方案1】:您需要使用以下查询来避免该范围内的 ATMUpdateApplicationId
SELECT ATMId from tableWithUpdates where ATMUpdateApplicationId not in(115,116,117)
或者
SELECT ATMId from tableWithUpdates where ATMUpdateApplicationId NOT BETWEEN 115 AND 117
更新
如果您想选择 ATMid 以外的 ID 属于 115,116 或 117,那么您可以这样做
SELECT ATMID FROM ATMUpdatesRequest
WHERE ATMID NOT IN(
SELECT ATMID from ATMUpdatesRequest
WHERE ATMUpdateApplicationId NOT IN(115,116,117))
【讨论】:
感谢您的帖子,但这并不能解决我的问题。由于该 ATMId 将有其他更新,我仍然会返回它,即使它没有更新 id = 115。如果它有这 3 个数字中的任何一个,我根本不需要返回那个 ATMId。 所以你的意思是你想要每个 ATMid 除了属于 115,116 或 117 的那个吗?如果您的意思是,请检查我的答案中的更新以上是关于返回更新 id 与当前更新不匹配的所有 ATM的主要内容,如果未能解决你的问题,请参考以下文章