SELECT
k.id,
k.title,
k.subtitle,
k.summary,
k.category_id,
k.author_id,
u.username AS author_name,
k.cover_image,
k.view_count,
k.like_count,
k.collect_count,
k.version,
k.status,
k.publish_time,
k.expire_time,
k.is_top,
k.tags,
k.create_time,
k.update_time
FROM knowledge k
LEFT JOIN sys_user u ON k.author_id = u.user_id
AND k.title LIKE CONCAT('%', #{query.title}, '%')
AND k.category_id = #{query.categoryId}
AND k.author_id = #{query.authorId}
AND k.status = #{query.status}
AND FIND_IN_SET(#{query.tag}, k.tags)
AND k.is_top = #{query.isTop}
ORDER BY
k.view_count
k.like_count
k.publish_time
k.create_time
ASC
DESC
SELECT
k.id,
k.title,
k.subtitle,
k.content,
k.plain_content,
k.summary,
k.category_id,
k.author_id,
u.username AS author_name,
k.cover_image,
k.view_count,
k.like_count,
k.collect_count,
k.version,
k.status,
k.publish_time,
k.expire_time,
k.is_top,
k.tags,
k.create_time,
k.update_time
FROM knowledge k
LEFT JOIN sys_user u ON k.author_id = u.user_id
WHERE k.id = #{id}
UPDATE knowledge
SET view_count = view_count + 1
WHERE id = #{id}
UPDATE knowledge
SET like_count = like_count + 1
WHERE id = #{id}
UPDATE knowledge
SET like_count = CASE WHEN like_count > 0 THEN like_count - 1 ELSE 0 END
WHERE id = #{id}