1.B表的id对应多条A表的contract_id
2.b表连接a表的时候,如何做到当a表的id=b表的contract_id的时候,只连接A表中start_date小的那一条记录?
1.B表的id对应多条A表的contract_id
2.b表连接a表的时候,如何做到当a表的id=b表的contract_id的时候,只连接A表中start_date小的那一条记录?
试试这个
SELECT MIN(A.start_date) as start_date
FROM A JOIN B
ON A.contract_id = B.id
GROUP BY A.contract_id;
A a left join B b on a.contract_id = b.id and a.start < b.start
连接条件可以进行过滤
join是笛卡尔积操作,on是对笛卡尔积进行筛选,A左连杰B,那么将保留所有的A,将合适的B连接到后面,反之亦然,具体怎么连就考虑具体的情况了
select min(A.start_date) as sDate from A join B on A.contract_id = B.id;
contract_id在A表不在B表,你自己标注的要看清楚哦.
谢邀,该问题,我以前也遇到过类似的场景;
实际上我没有找到合适的SQL来处理这样的需求,就算有,现在没有性能问题以后也会有性能问题,因此我不建议在SQL中完成这样的逻辑;推荐的方式:
status
字段,用于区分同一contract_id
下start_date
最小的记录;a_id
字段用于冗余管理连你所需要记录的id。3 回答2.6k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.6k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决