2016-07-07 92 views
0

下午好!请让我在序言中指出我对MySQL非常不熟悉,但却被迫学习。这就是说,我有一个表结构如下:返回不存在值的结果

Table View

我所面临的问题是,ExtraFieldID对498和499不列出的每个ID存在。我需要弄清楚如何找到缺少这些ExtraFieldID值的ID,但不返回其他结果。我怎么能这样做呢?
到目前为止,我还没有找到解决方案,或者还没有识别解决方案的技能。无论哪种方式,这对我来说仍然是一个问题。

我很感激任何人都可以提供的帮助。

+0

你能澄清你的问题吗?对于列出的每个Id,您的意思是不存在的? – sgeddes

+0

所以即时猜测你想要ID的谁没有'498和499' ExtraFieldID? – Shank

+0

当然。这个特定的表格包含RMM工具其他表格引用的值。例如,ExtraFieldID 498引用数据库前端的复选框。 ID列可以指特定的客户端,客户端的特定位置或安装了监视代理程序的特定计算机。为了这篇文章的目的,ID列引用另一个表上的位置ID。如果复选框从未被更改过,ExtraFieldID列下的498值将不存在相应的ID。我需要找到缺少相应498值的ID值。 – jbrantley

回答

0

这将找到所有没有ExtraFieldId = 498的ID。

SELECT DISTINCT id 
FROM yourTable 
WHERE id NOT IN (
    SELECT id 
    FROM yourTable 
    WHERE ExtraFieldId = 498) 

或者你可以使用自联接:

SELECT DISTINCT t1.id 
FROM yourTable AS t1 
LEFT JOIN yourTable AS t2 ON t1.id = t2.id AND t2.ExtraFieldId = 498 
WHERE t2.id IS NULL 
0

由于要返回的记录,你可以使用的WHERENOT IN条款相结合 - 检查(或者仅仅是标识?) 498499。你可以写这样的查询:

SELECT DISTINCT yourTable.id FROM yourTable WHERE ExtraFieldID NOT IN (498, 499); 

我希望这有助于。