외부 적용 또는 측면 적용에 대한 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
'programing' 카테고리의 다른 글
에이잭스를 통해 어떻게 php로 배열을 보낼 수 있습니까? (0) | 2023.07.29 |
---|---|
.vmx 메서드를 사용하여 쉼표 없이 배열을 문자열로 변환 (0) | 2023.07.29 |
가져오기 오류: 윈도우즈 732비트에서 pip --version 명령을 실행할 때 이름 main을 가져올 수 없습니다. (0) | 2023.07.29 |
PowerShell을 사용하여 열 제목이 없는 데이터 출력 (0) | 2023.07.29 |
Oracle 데이터베이스:BLOB 읽는 법? (0) | 2023.07.29 |