返回更新 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的主要内容,如果未能解决你的问题,请参考以下文章

让函数返回表的更新部分

仅当所有匹配条件都失败时才更新标志

UNION ALL vs UNION 用于更新/返回+选择?

从左表返回所有行,从右表返回不同的匹配行

mongodb 没有则插入,有则更新其中某列

强制 attr 更新后 JQuery html() 调用不返回值