如果另一个表中不存在列值,则获取计数

时间:2014-10-07 15:48:24

标签: sql sql-server

我有以下两个问题:

select count(*) from table_1 where c_id=12345

select count(*) from table_2 where success=1 and c_id=12345

我在C#层添加了这两个计数。但是,table_1table_2都有一个名为m_id的列。我希望能够得到table_2具有这两种条件的总计数:

  • success=1 and c_id=12345
  • m_id不等于m_id中的任何table_1 where c_id=12345

这可能吗?是否可以在单个查询中执行此操作?我还是SQL新手,所以如果这是一个显而易见的问题我会道歉。

2 个答案:

答案 0 :(得分:1)

只需在第二个查询中添加not exists子句:

select count(*)
from table_2 t2
where t2.success = 1 and t2.c_id = 12345 and
      not exists (select 1 from table_1 t1 where t1.m_id = t2.mid and t1.c_id = 12345);

答案 1 :(得分:0)

您可以使用NOT EXISTS

select
    count(*)
from table_2
where success = 1
    and c_id = 12345
    and not exists
    (
        select 
            1 
        from table_1 
        where table_2.m_id = table_1.m_id and table_1.c_id = 12345
    )