返回不存在值的结果

时间:2016-07-07 20:02:34

标签: mysql

下午好!请让我在我的问题前面指出我对MySQL非常缺乏经验,但我被迫学习。也就是说,我有一个具有以下结构的表:

Table View

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

我感谢任何人能够提供的任何帮助。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

既然您想要返回记录(或只是ID?),您可以使用WHERENOT IN子句的组合来检查498499 。您可以编写如下查询:

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

我希望这会有所帮助。