好久没写sql了,这个系统居然要求是全栈类型。从后到前都要做(我的js都忘光了),先记录下一个sql这块吧。
一需求:
现在有个表crm,里面存放着:id,recommended_id,其中recommended_id属于id范围,就是推荐人的id。
现在的需求是,查询全部的数据,过滤条件是符合某个分类,返回时id,及其所推荐id,若果没有,则返回null,如果推荐多条,和合并为一条用“”,“”分割。
二实现:
看了下,这表数据不大,几十万条。符合条件的结果几千条。
SELECT c.id, r.recommended_id from crm c
LEFT JOIN
(
SELECT id, GROUP_CONCAT(recommended_id) as recommended_id from crm
where 业务条件1 =X and 业务条件2 =Y GROUP BY recommended_id) r
on c.id= r.id where 业务条件1 =X and 业务条件2 =Y
关键词:
GROUP_CONCAT:多行合并成一行
left join:允许右侧结果为空