我有一个 loan
表和a loan_status
table。这个 loan
除其他列外,该表还包括 loan_id
和一个 date_issued
列。这里有一个查询 date_issued
对于其他贷款:
(select GROUP_CONCAT(Date(lj.date_issued) SEPARATOR ', ') from loan lj INNER JOIN client clj ON (clj.client_id = lj.client_id)
where clj.client_id = '2299629' and lj.id != l.id) as other_loan_issue_dates,
因为这个客户有7笔贷款,所以我有一个这样的表格,有6个逗号分隔的日期:
问题是:
我需要排除在 other_loan_issue_dates
任何 loan
有一个 status_id
的 27
在 loan_status
table和那个 status_id
是最后一个进入 loan_status
那张table loan
. 每笔贷款都有许多状态。
举个例子:
此查询显示 test
列,该列确定是否应在 other_loan_issue_dates
:
select status_id = 27 as test from loan_status ls where loan_id = 2052456 ORDER BY datestamp DESC LIMIT 1;
以下错误且未完成运行:
(select GROUP_CONCAT(Date(lj.date_issued) SEPARATOR ', ') from loan lj INNER JOIN client clj ON (clj.client_id = lj.client_id)
JOIN loan_status ls ON ls.status_id = (
select status_id from loan_status ls where loan_id = 2052456 ORDER BY datestamp DESC LIMIT 1
)
where clj.client_id = '2299629' and lj.id != l.id and ls.status_id != 27) as other_loan_issue_dates,
我也尝试了以下方法,但我不知道它是否有效,因为它似乎使结果成倍增加:
(select GROUP_CONCAT(Date(lj.date_issued) SEPARATOR ', ') from loan lj INNER JOIN client clj ON (clj.client_id = lj.client_id)
LEFT OUTER JOIN loan_status ls ON (ls.loan_id = lj.id)
where clj.client_id = '2299629' and lj.id != l.id and (select status_id = 27 as test from loan_status ls where loan_id = ls.loan_id ORDER BY datestamp DESC LIMIT 1) = 0) as other_loan_issue_dates,
最后一个怎么用 loan_status
行,检查是否 status_id
是 27
如果是这样的话,排除这个 loan
?
1条答案
按热度按时间hc2pp10m1#
我不确定你的查询是否正确,因为这只是一些更大查询的一部分。不过,我建议您尝试以下方法:
这个
SELECT loan_id from loan_status WHERE status_id = 27
会给你贷款的身份证status_id=27
. 然后你把NOT IN
告诉mysql排除这些贷款。