请考虑以下示例: -
包含贷款和状态栏及记录的表格。
Loan Status
--------------
Loan1 NULL
Loan1 Critical
Loan1 Moderate
Loan2 NULL
Loan3 NULL
Loan3 Critical
Loan4 Critical
Loan5 Moderate
我需要获取NULL
状态记录列表。 Loan1
和Loan3
同时分配了NULL
和Critical
。所以我需要从我的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
答案 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