programing

강조 표시된 날짜 게시물이 먼저 정렬된 데이터베이스에서 뉴스 게시물 선택

procenter 2022. 12. 29. 21:47
반응형

강조 표시된 날짜 게시물이 먼저 정렬된 데이터베이스에서 뉴스 게시물 선택

커스텀 뉴스 피드 컴포넌트를 구축하고 있으며 강조 표시된 게시물의 개념을 구현하려고 합니다.표의 예를 다음에 나타냅니다.

아이디 직함 내용 post_date 하이라이트_날짜
1 테스트 1 ... 2021-10-01 06:12:00 null
2 테스트 2 ... 2021-10-02 08:54:00 null
3 테스트 3 ... 2021-10-03 13:52:00 2021-11-30 00:00:00
4 테스트 4 ... 2021-10-04 15:32:00 null

데이터를 가져올 때 다음 방법으로 주문할 수 있습니다.post_date DESC단, 강조 표시된 게시물은 오늘 날짜가 강조 표시된 날짜 이전인 경우에만 맨 위에 표시되어야 합니다.오늘 날짜가 강조 표시된 날짜 이후인 경우 해당 날짜는 무시되고 다음 날짜 내에 자연스럽게 표시됩니다.post_date종류.

예를 들어, 아래 쿼리는 작동하지 않습니다. 강조 표시된 게시물은 항상 먼저 나타나기 때문입니다.highlight_date소멸했습니다.

select * from post
order by post_date desc, highlight_date asc
limit 20

이것을 2개의 쿼리(하나는 강조표시 전용, 1개는 일반 전용)로 분할해, 애플리케이션내에서 2개를 합성할 수 있지만, 페이지 번호부여/무한 스크롤과 함께 사용하기 위한 실장은, 현재, 사용의 메리트가 없기 때문에 어렵습니다.LIMIT그리고.OFFSET제 질문에는요.

위의 예제 데이터를 사용하여 결과 주문이 어디에 배치될지 쿼리를 작성하려고 합니다.[3, 4, 2, 1]2021-11-31 이전 날짜의 경우[4, 3, 2, 1]다음 날짜로.

시간이 지날수록 이 테이블이 커질 것으로 예상되기 때문에 어떻게 하면 효율적으로 진행할 수 있을지 잘 모르겠습니다.어떤 방향이나 도움을 주셔도 좋습니다!TIA!

SELECT * FROM post
ORDER BY CASE WHEN highlight_date > NOW() THEN 0 ELSE 1 END, post_date DESC
LIMIT 20

db <> 삭제

SQL:

SELECT  *,
    COALESCE(highlight_date > NOW(),0) highlight
FROM    post
ORDER
BY  highlight DESC , id DESC

내 데이트는 NOW2021-10-01 23:06:00

NOW()가 highlight_date보다 낮은 경우의 결과 결과 저하

NOW()가 highlight_date보다 클 때 결과 결과-대

설명:

COALESCE비교에 필요합니다.NULL데이터입니다.왜냐하면NULL비교해서date그 결과는 다음과 같습니다.NULL.그리고.0보다 크다NULL

병합하지 않은 잘못된 결과:

SELECT  *,
    highlight_date > NOW() highlight
FROM    post
ORDER
BY  highlight DESC , id DESC

결과: 합체하지 않고

언급URL : https://stackoverflow.com/questions/69400517/select-news-posts-from-a-database-with-a-highlighted-date-posts-sorted-first

반응형