MySQL如何使用Not Exist在多个表上进行选择
Posted
技术标签:
【中文标题】MySQL如何使用Not Exist在多个表上进行选择【英文标题】:MySQL how to select on multiple tables using Not Exist 【发布时间】:2013-08-09 19:46:16 【问题描述】:我有三张桌子。一个是删除候选表。该表是根据某些标准创建的,但没有包括几个需要考虑的因素(系统的限制)。考虑到那些“遗漏”的因素,创建了另外两个表。因此,我需要对这三个表运行 SELECT 查询以得出删除列表。
我开始的是:
SELECT inactive.id
FROM inactive, renamed, returned
WHERE NOT EXISTS (inactive.id = remamed.id and inactive.id = returned.id)
但这给了我一个错误。有人可以在这里指出我的错误吗?
谢谢
【问题讨论】:
【参考方案1】:您在这里尝试做什么并不完全清楚。
我假设您想要 inactive
表中不存在于 renamed
表或 inactive
表中的所有行的列表。对吗?
如果是这样,您可以使用这样的查询:
SELECT inactive.id
FROM inactive
WHERE NOT EXISTS (select null from renamed where renamed.id = inactive.id)
AND NOT EXISTS (select null from returned where returned.id = inactive.id)
【讨论】:
我有三个表,不活动的、重命名的、返回的。我想要一个非活动表中所有行的列表,这些行在重命名的表或返回的表中都不存在。但是,从您的回复中,我想我知道我在哪里犯了两个错误。感谢您的帮助。如果不管,我会回帖。 @nakins 。 . .如果这回答了您的问题,您应该接受答案。 我认为我应该使用 OR 而不是 AND。如果我使用 AND,那么为了选择 inactive.id,它必须不存在于重命名和返回的表中,对吗?但是,如果我使用OR,那么如果重命名的表中不存在inactive.id,是否会继续检查返回的表中是否不存在inactive.id?以上是关于MySQL如何使用Not Exist在多个表上进行选择的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Datetime 中使用 NOT IN 或 Not Exist 自定义?