Mysql 如何根据条件检索所有记录

Mysql 如何根据条件检索所有记录,mysql,sql,sql-server,sql-server-2008,Mysql,Sql,Sql Server,Sql Server 2008,我在下面有一个表格,每个N_IDi.e 43、54、32、46和24通常有3条记录。但由于某些原因,N_ID 21和39只有一个记录 要求:通过排除C_类型来查询所有记录!=2,然后状态应为1 使用的查询: Select A.N_ID, A.C_Type, A.C_File_Type, A.Status FROM TABLE A where A.Config_Type != 2 AND A.Status = 1 AND EXISTS (Select 1

我在下面有一个表格,每个N_IDi.e 43、54、32、46和24通常有3条记录。但由于某些原因,N_ID 21和39只有一个记录

要求:通过排除C_类型来查询所有记录!=2,然后状态应为1

使用的查询:

Select A.N_ID, A.C_Type, A.C_File_Type, A.Status 
FROM TABLE A 
where A.Config_Type != 2 
      AND A.Status = 1 
      AND EXISTS (Select 1 
                  from TABLE B 
                  WHERE A.N_ID = B.N_ID Group By B.N_ID, B.C_Type, B.Status 
                  HAVING count(B.Status) > 1
                  )
输出: 我得到了除C_Type=2之外的所有记录

现在的问题是如何更改现有查询以获取N_ID='21,39'的其他记录?因为这些记录不是作为我的查询的一部分检索的

表中的数据是我从上面的查询中得到的,除了记录N_ID=21、39之外,这些都没有被检索到。我也想要那些突出显示的记录


如果删除EXISTS查询中的HAVING countB.Status>1,会发生什么情况?这将过滤掉根据GROUP BY分组时导致空状态的记录。我认为它没有任何作用,因为小组已经这样做了

我不明白这个计划的目的

      AND EXISTS (Select 1 
              from TABLE B 
              WHERE A.N_ID = B.N_ID Group By B.N_ID, B.C_Type, B.Status 
              HAVING count(B.Status) > 1
              )
在查询中,因为我们正在检查B中的外部A的N_ID,该表的N_ID将永远存在

因此,您可以避免这个exists条件,只需将查询编写为

    Select A.N_ID, A.C_Type, A.C_File_Type, A.Status 
      FROM TABLE A 
       where A.Config_Type != 2 
        AND A.Status = 1 

您确定显示的输出是针对所显示的查询的吗?它如何显示除1以外的其他状态?第一个查询有一个筛选器和一个。Status=1@Mandar实际上正在比较NetworkElementID应该相同的同一个表。@Michael Harmon是的,我只获取Status=1的所有记录,不包括Status=2和Status=4。添加了一个最新的表,其中我没有获取N_ID=21和391的记录。现在如何更改查询以获得该结果?如果在EXISTS查询中删除HAVING countB.Status>1,会发生什么情况?这将过滤掉根据GROUP BY分组时导致空状态的记录。我认为它没有任何作用,因为GROUP BY已经这样做了。->如果我们在上面的场景中使用它,您的查询将以不同的方式运行。例如,请参考我在上面更新的新表。如果我在下面的查询中删除countB.Status>1,请选择a.N\u ID、a.C\u类型、a.C\u文件类型,A.表A中的状态,其中A.Config_Type!=2和A.状态=1且存在从表B中选择1,其中A.N_ID=B.N_ID按B.N_ID、B.C_类型、B.状态分组,然后突出显示记录,即43和46也作为上述查询的一部分检索。理想情况下,我不需要这些记录,因为我的条件应该满足,状态值应该是1,并且总是1。您可以看到示例记录,如54、32、21、39、24。请告诉我在这种情况下如何更改查询。