refactor: 更改子查询为join

This commit is contained in:
张松
2024-12-30 20:58:05 +08:00
parent c4852d5e7e
commit 51e1db2bc4

View File

@@ -6,75 +6,91 @@
<select id="selectCourseByCollect" resultType="com.sqx.modules.course.entity.Course"> <select id="selectCourseByCollect" resultType="com.sqx.modules.course.entity.Course">
SELECT SELECT
MAX(u.update_time) AS produceEndTime, MAX(u.update_time) AS produceEndTime,
c.*, c.*,
d1.course_details_name AS courseDetailsName, d.course_details_name AS courseDetailsName,
d1.course_details_id AS courseDetailsId, d.course_details_id AS courseDetailsId,
COUNT(d2.course_details_id) AS courseDetailsCount cd.course_details_count AS courseDetailsCount
FROM FROM
course_collect u course_collect u
LEFT JOIN LEFT JOIN course c ON u.course_id = c.course_id
course c ON u.course_id = c.course_id LEFT JOIN (
LEFT JOIN SELECT
course_collect cc1 ON cc1.course_id = u.course_id cc.course_id,
AND cc1.classify = 3 cc.user_id,
AND cc1.user_id = #{userId} d.course_details_name,
LEFT JOIN d.course_details_id
course_details d1 ON cc1.course_details_id = d1.course_details_id FROM
LEFT JOIN course_collect cc
course_details d2 ON d2.course_id = c.course_id LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE WHERE
u.user_id = #{userId} cc.classify = 3
AND c.course_id IS NOT NULL AND cc.user_id = #{userId}
AND u.classify = #{classify}
GROUP BY
u.course_id, c.course_id
ORDER BY ORDER BY
produceEndTime DESC; cc.update_time DESC
) AS d ON u.course_id = d.course_id
LEFT JOIN (
SELECT
d.course_id,
COUNT(*) AS course_details_count
FROM
course_details d
GROUP BY
d.course_id
) AS cd ON c.course_id = cd.course_id
WHERE
u.user_id = #{userId}
AND c.course_id IS NOT NULL
AND u.classify = #{classify}
GROUP BY
u.course_id
ORDER BY
produceEndTime DESC
<!-- SELECT
MAX( u.update_time ) AS produceEndTime, <!-- SELECT
c.*, MAX( u.update_time ) AS produceEndTime,
( c.*,
SELECT (
d.course_details_name SELECT
FROM d.course_details_name
course_collect cc FROM
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id course_collect cc
WHERE LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
d.course_id = u.course_id WHERE
AND cc.classify = 3 and cc.user_id=#{userId} d.course_id = u.course_id
ORDER BY AND cc.classify = 3 and cc.user_id=#{userId}
cc.update_time DESC ORDER BY
LIMIT 1 cc.update_time DESC
) AS courseDetailsName, LIMIT 1
( ) AS courseDetailsName,
SELECT (
d.course_details_id SELECT
FROM d.course_details_id
course_collect cc FROM
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id course_collect cc
WHERE LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
d.course_id = u.course_id WHERE
AND cc.classify = 3 and cc.user_id=#{userId} d.course_id = u.course_id
ORDER BY AND cc.classify = 3 and cc.user_id=#{userId}
cc.update_time DESC ORDER BY
LIMIT 1 cc.update_time DESC
) AS courseDetailsId, LIMIT 1
( SELECT count(*) FROM course_details d WHERE d.course_id = c.course_id ) AS courseDetailsCount ) AS courseDetailsId,
FROM ( SELECT count(*) FROM course_details d WHERE d.course_id = c.course_id ) AS courseDetailsCount
course_collect u FROM
LEFT JOIN course c ON u.course_id = c.course_id course_collect u
WHERE LEFT JOIN course c ON u.course_id = c.course_id
u.user_id = #{userId} WHERE
AND c.course_id IS NOT NULL u.user_id = #{userId}
AND u.classify = #{classify} AND c.course_id IS NOT NULL
GROUP BY AND u.classify = #{classify}
u.course_id GROUP BY
ORDER BY u.course_id
produceEndTime DESC ORDER BY
--> produceEndTime DESC
-->
</select> </select>
</mapper> </mapper>