programing

sql distinct 또는 그룹화하여 올바른 순서를 가져옵니다.

closeapi 2023. 10. 18. 22:07
반응형

sql distinct 또는 그룹화하여 올바른 순서를 가져옵니다.

좋아요, 그래서 저는 게시물 목록을 가지고 있고 일부 게시물은 다른 게시물에 대한 답글입니다.답장 역순으로 포스트 부모 목록을 받고 싶습니다.

그룹화를 시도했지만 항상 잘못된 순서가 나열되고 구별되는 것만이 작동할 수 있는 유일한 방법이지만 분명히 포스트 ID만 나열되고 나머지 데이터는 나열되지 않습니다.

데이터베이스 예제 여기

enter image description here

제가 게시물을 뽑고 싶은 순서는 1,3,5,4,2 입니다. 가장 최근에 회신한 순서대로 무응답 게시물입니다.

SELECT DISTINCT `thread`
FROM
(
    SELECT COALESCE(NULLIF(`parent_post`, 0), `postID`) AS `thread`
    FROM `posts`
    ORDER BY `postID` DESC
    LIMIT 100
) `sub`

이것은 그들을 정확한 순서로 끌어내지만 분명히 게시물만 꺼냅니다.나머지 필드가 아닌 아이디로 그룹을 해봤는데 순서가 맞지 않아요.

요구사항을 SQL로 간단히 번역하면 다음과 같습니다.

select *
from posts p1
where parent_post = 0
order by (
  select max("datetime")
  from posts p2
  where p2.parent_post = p1.postID
) desc

즉, 모든 행 선택posts스레드 시작자이며(응답이 아닌), 모든 응답에서 가장 최근 타임스탬프를 내림차순으로 순서를 매깁니다.

언급URL : https://stackoverflow.com/questions/48095776/sql-distinct-or-group-by-to-get-correct-order

반응형