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
MAX(u.update_time) AS produceEndTime,
c.*,
d1.course_details_name AS courseDetailsName,
d1.course_details_id AS courseDetailsId,
COUNT(d2.course_details_id) AS courseDetailsCount
MAX(u.update_time) AS produceEndTime,
c.*,
d.course_details_name AS courseDetailsName,
d.course_details_id AS courseDetailsId,
cd.course_details_count AS courseDetailsCount
FROM
course_collect u
LEFT JOIN
course c ON u.course_id = c.course_id
LEFT JOIN
course_collect cc1 ON cc1.course_id = u.course_id
AND cc1.classify = 3
AND cc1.user_id = #{userId}
LEFT JOIN
course_details d1 ON cc1.course_details_id = d1.course_details_id
LEFT JOIN
course_details d2 ON d2.course_id = c.course_id
course_collect u
LEFT JOIN course c ON u.course_id = c.course_id
LEFT JOIN (
SELECT
cc.course_id,
cc.user_id,
d.course_details_name,
d.course_details_id
FROM
course_collect cc
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE
u.user_id = #{userId}
AND c.course_id IS NOT NULL
AND u.classify = #{classify}
GROUP BY
u.course_id, c.course_id
cc.classify = 3
AND cc.user_id = #{userId}
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,
c.*,
(
SELECT
d.course_details_name
FROM
course_collect cc
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE
d.course_id = u.course_id
AND cc.classify = 3 and cc.user_id=#{userId}
ORDER BY
cc.update_time DESC
LIMIT 1
) AS courseDetailsName,
(
SELECT
d.course_details_id
FROM
course_collect cc
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE
d.course_id = u.course_id
AND cc.classify = 3 and cc.user_id=#{userId}
ORDER BY
cc.update_time DESC
LIMIT 1
) AS courseDetailsId,
( SELECT count(*) FROM course_details d WHERE d.course_id = c.course_id ) AS courseDetailsCount
FROM
course_collect u
LEFT JOIN course c ON u.course_id = c.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,
c.*,
(
SELECT
d.course_details_name
FROM
course_collect cc
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE
d.course_id = u.course_id
AND cc.classify = 3 and cc.user_id=#{userId}
ORDER BY
cc.update_time DESC
LIMIT 1
) AS courseDetailsName,
(
SELECT
d.course_details_id
FROM
course_collect cc
LEFT JOIN course_details d ON cc.course_details_id = d.course_details_id
WHERE
d.course_id = u.course_id
AND cc.classify = 3 and cc.user_id=#{userId}
ORDER BY
cc.update_time DESC
LIMIT 1
) AS courseDetailsId,
( SELECT count(*) FROM course_details d WHERE d.course_id = c.course_id ) AS courseDetailsCount
FROM
course_collect u
LEFT JOIN course c ON u.course_id = c.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>
</mapper>