GROUP BY
ํ์ง ์์๊ธฐ ๋๋ฌธSELECT A.cmt_id, A.feed_id, A.users_id, A.cmt_cmt, A.cmt_regdt
, B.users_img, B.users_nickname
<if test="user4FavCmt > 0">
, CASE WHEN COUNT(C.users_id) IS NULL THEN 0 END AS cmtFavCnt ๐๐บํ๋ฆฌ๊ฒ ์ ์๐บ
, CASE WHEN D.users_id IS NULL THEN 0 ELSE 1 END AS isCmtFav
</if>
FROM cmt A
LEFT JOIN users B
ON A.users_id = B.users_id
<if test="user4FavCmt > 0">
LEFT JOIN cmt_fav C ๐๐บGROUP BY ํด์ผํ๋ค๐บ
ON C.cmt_id = A.cmt_id AND C.feed_id = A.feed_id
LEFT JOIN cmt_fav D ๐๐บGROUP BY ํด์ผํ๋ค๐บ
ON D.cmt_id = A.cmt_id AND D.feed_id = A.feed_id AND D.users_id = ${user4FavCmt}
</if>
WHERE A.feed_id = ${feed_id}
ORDER BY A.feed_id DESC
๐์ฌ๋ฐ๋ฅธ SQL
SELECT A.cmt_id, A.feed_id, A.users_id, A.cmt_cmt, A.cmt_regdt
, B.users_img, B.users_nickname
, IFNULL(C.cnt, 0) AS cmtFavCnt ๐๐บ์์ ๐บ
, CASE WHEN D.users_id IS NULL THEN 0 ELSE 1 END AS isCmtFav
FROM cmt A
LEFT JOIN users B
ON A.users_id = B.users_id
LEFT JOIN ( ๐๐บGROUP BY๐บ
SELECT cmt_id, feed_id, COUNT(cmt_id) AS cnt
FROM cmt_fav
GROUP BY cmt_id
) C
ON C.cmt_id = A.cmt_id AND C.feed_id = A.feed_id
LEFT JOIN ( ๐๐บGROUP BY๐บ
SELECT cmt_id, feed_id, users_id
FROM cmt_fav
GROUP BY cmt_id
) D
ON D.cmt_id = A.cmt_id AND D.feed_id = A.feed_id AND D.users_id = 2
WHERE A.feed_id = 3
ORDER BY A.feed_id DESC