programing

외부 적용 또는 측면 적용에 대한 mariadb 대안?

css3 2023. 7. 29. 08:48

외부 적용 또는 측면 적용에 대한 mariadb 대안?

제가 원한 것은 CROSS APPLY를 사용하는 것이었는데, mysql에는 없는 것 같습니다.제가 읽은 대안은 가로 방향입니다.음, 저는 mariadb 10.3을 사용하고 있는데 그것도 존재하지 않는 것 같습니다.티켓 테이블에는 노트 테이블의 ticket_id 열에서 참조하는 ID가 포함되어 있습니다.티켓에는 많은 노트가 포함될 수 있습니다. 모든 티켓을 가장 최근 노트 날짜(post_date)와 함께 나열하려고 합니다.mariadb에 대한 아래 쿼리를 어떻게 작성할 수 있습니까?

SELECT t.*, n.post_date
FROM ticket t,
LATERAL (
    SELECT note.post_date FROM note WHERE t.id = note.ticket_id ORDER BY note.post_date DESC LIMIT 1
) n;

테이블 구조 예제:

티켓

이드 주제
1 물건
2

메모

이드 날짜 이후의 ticket_id
1 1
2 1
3 2
4 1
5 2

측면 지원을 위해 mariadb를 요청하는 사람들로부터 오픈 지라 티켓을 찾았습니다.

제가 읽은 바로는LATERAL버전 11까지 MariaDB에서 지원되지 않습니다.하지만 우리는 쉽게 사용할 수 있습니다.ROW_NUMBER지원되는 항목:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ticket_id ORDER BY post_date DESC) rn
    FROM note
)

SELECT t.*, n.post_date
FROM ticket t
INNER JOIN cte n
    ON n.ticket_id = t.id
WHERE n.rn = 1;

현재 가로 방향 결합을 자세히 변환하려면 다음을 사용합니다.

SELECT t.*,
    (SELECT n.post_date
     FROM note n
     WHERE t.id = note.ticket_id
     ORDER BY n.post_date DESC
     LIMIT 1)
FROM ticket t;

언급URL : https://stackoverflow.com/questions/74580079/mariadb-alternative-to-outer-apply-or-lateral