在不使用子查询的情况下计算具有特定状态的行的出现次数
count occurence of rows with specific status without using subquery
这是我的table
loan_id bid_id lender_id borrower_id 金额 兴趣 持续时间 loan_status
1 1 60 63 300.00 12.00 3 'completed'
2 2 61 63 300.00 12.00 3 'completed'
3 3 62 63 300.00 12.00 3 'pending',
4 1 62 63 300.00 12.00 3 'pending'
7 4 60 63 300.00 12.00 3 'completed'
我只想提取所有记录中 loan_status 已 完成 的那些 bid_id。这意味着如果 bid_id 有任何状态为 pending 的记录,那么它将不会提取该记录。
我正在使用运行良好的以下查询:
SELECT bid_id
FROM loan
WHERE bid_id NOT IN (
SELECT l.bid_id
FROM loan l
WHERE l.`loan_status` = 'pending'
AND l.bid_id = bid_id
GROUP BY l.`bid_id`
HAVING COUNT(l.`bid_id`)>= 1
)
GROUP BY bid_id
有没有其他方法可以在不使用子查询的情况下得到我们想要的结果。
您可以使用 group by
和 having
轻松完成此操作:
select bid_id
from loan
group by bid_id
having sum(loand_status = 'pending') = 0
这是我的table
loan_id bid_id lender_id borrower_id 金额 兴趣 持续时间 loan_status
1 1 60 63 300.00 12.00 3 'completed'
2 2 61 63 300.00 12.00 3 'completed'
3 3 62 63 300.00 12.00 3 'pending',
4 1 62 63 300.00 12.00 3 'pending'
7 4 60 63 300.00 12.00 3 'completed'
我只想提取所有记录中 loan_status 已 完成 的那些 bid_id。这意味着如果 bid_id 有任何状态为 pending 的记录,那么它将不会提取该记录。
我正在使用运行良好的以下查询:
SELECT bid_id
FROM loan
WHERE bid_id NOT IN (
SELECT l.bid_id
FROM loan l
WHERE l.`loan_status` = 'pending'
AND l.bid_id = bid_id
GROUP BY l.`bid_id`
HAVING COUNT(l.`bid_id`)>= 1
)
GROUP BY bid_id
有没有其他方法可以在不使用子查询的情况下得到我们想要的结果。
您可以使用 group by
和 having
轻松完成此操作:
select bid_id
from loan
group by bid_id
having sum(loand_status = 'pending') = 0