仅考虑NULL值

时间:2014-09-18 11:20:47

标签: mysql null

请考虑以下示例: -

包含贷款和状态栏及记录的表格。

Loan  Status
--------------
Loan1 NULL 
Loan1 Critical 
Loan1 Moderate
Loan2 NULL 
Loan3 NULL 
Loan3 Critical 
Loan4 Critical
Loan5 Moderate

我需要获取NULL状态记录列表。 Loan1Loan3同时分配了NULLCritical。所以我需要从我的MySQL查询中排除这两笔贷款。

尝试使用以下查询:

Select * from table where Status is not null ;

这导致我有3条记录错误。有人可以帮助我知道如何考虑上述要求。

我尝试过自己加入这项工作,但寻找更好的解决方案

更新了问题: - 我如何报告关键和中等地位贷款的总数。

通过使用max(status)我只能得到适度的记录。 但如果贷款具有中等和严重的地位;关键需要报告。 我怎样才能将loan1报告为中等

输出: -

NULL     Critical    Moderate 
1        3             1

NULL - 状态为NULL的贷款总额 - loan2

严重 - 状态为“关键”的贷款总额 - 贷款1,贷款3,贷款4

中等 - 状态为中等的贷款总额 - loan5

4 个答案:

答案 0 :(得分:1)

SELECT
    Loan
FROM
    Loans
GROUP BY
  Loan
HAVING
    MAX(Status) IS NULL

答案 1 :(得分:1)

你可以这样做:

SELECT
    *
FROM
    table
WHERE 
    Status is not null
    AND NOT EXISTS
    (
        SELECT
            NULL
        FROM
            table AS innerTbl
        WHERE
            innerTbl.Loan  = table.Loan
            AND innerTbl.Status IS NULL
    )

答案 2 :(得分:1)

试试吧

select * 
  from (
    select if(a.loan in (
      select loan 
        from table 
       where status is not null
           ),null,a.loan) as loan,
           a.status 
      from (
        Select * 
          from table 
         where status is null
           ) a
       ) b 
 where b.loan is not null

答案 3 :(得分:1)

类似的东西:

SELECT SUM(t.is_null) `null`
       SUM(t.is_critical) critical
       SUM(t.is_moderate) moderate
  FROM (
  SELECT NOT SUM(status IS NOT NULL) is_null
         SUM(status='critical') AND TRUE is_critical
         SUM(status='moderate') AND NOT SUM(status = 'critical') is_moderate
    FROM table
GROUP BY loan 
       ) t