SELECT
uid
,nick_name
,achievement
FROM user_info
LEFT JOIN (
SELECT uid
,MAX(DATE_FORMAT(submit_time, "%Y%m")) AS date_ex
FROM user_info
JOIN exam_record USING(uid)
GROUP BY uid
) data1 USING(uid)
LEFT JOIN (
SELECT uid
,MAX(DATE_FORMAT(submit_time, "%Y%m")) AS date_pr
FROM user_info
JOIN practice_record USING(uid)
GROUP BY uid
) data2 USING(uid)
WHERE nick_name LIKE "牛客%号"
AND achievement BETWEEN 1200 AND 2500
AND (date_ex = "202109" OR date_pr = "202109" )
- 一定要使用LEFT JOIN,否则会因为两次JOIN连接删除某些用户,违背后期OR的需要,从而导致结果中只使用JOIN会报错