>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL의 SELECT DISTINCT ON 쿼리를 MySQL로 변환하는 방법은 무엇입니까?

PostgreSQL의 SELECT DISTINCT ON 쿼리를 MySQL로 변환하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-13 15:26:02391검색

How to Convert PostgreSQL's SELECT DISTINCT ON Queries to MySQL?

PostgreSQL에서 MySQL로 DISTINCT ON 쿼리 변환

PostgreSQL에서 MySQL로 전환하는 동안 사용자는 제거 구문에 차이가 있을 수 있습니다. 특정 열 값을 기반으로 행을 복제합니다. PostgreSQL은 SELECT DISTINCT ON 문을 사용하는 반면 MySQL은 GROUP BY 절의 확장을 사용합니다.

PostgreSQL의 SELECT DISTINCT ON

SELECT DISTINCT ON(col1, col2, col3) PostgreSQL의 쿼리는 지정된 열의 각 고유 조합에 대해 첫 번째 한정 행을 유지합니다. 예를 들어 다음 테이블을 고려해 보세요.

col1 col2 col3 col4 col5
1 2 3 777 888
1 2 3 888 999
3 3 3 555 555

쿼리 결과는 다음과 같습니다.

col4 col5
777 888
555 555

MySQL의 GROUP BY 확장

MySQL 확장 GROUP BY 절에 포함되지 않은 경우에도 집계되지 않은 열을 선택할 수 있습니다. 그러나 서버는 각 그룹에 대해 이러한 열에서 임의의 값을 선택할 수 있습니다.

동등한 MySQL 쿼리

PostgreSQL 예에 ​​해당하는 MySQL 쿼리는 다음과 같습니다.

SELECT col4, col5
FROM tablename
GROUP BY col1, col2, col3;

PostgreSQL과 MySQL은 모두 각(col1, col2, col3) 조합에 대해 하나의 행을 반환하지만 반환된 특정 행은 명시적인 순서가 없기 때문에 다를 수 있습니다.

정렬된 쿼리에 대한 해결 방법

PostgreSQL의 정렬된 DISTINCT ON 동작을 모방하려면 MySQL에서 더 복잡한 쿼리가 필요합니다.

SELECT t1.col4, t1.col5
FROM tablename t1
INNER JOIN (
    SELECT col1, col2, col3, MIN(col4) AS m_col4
    FROM tablename
    GROUP BY col1, col2, col3
) s
ON t1.col1 = s.col1
AND t1.col2 = s.col2
AND t1.col3 = s.col3
AND t1.col4 = s.m_col4
GROUP BY
    t1.col1, t1.col2, t1.col3, t1.col4;

결론

MySQL에는 Postgresql의 SELECT DISTINCT ON에 대한 정확한 대응 기능이 없지만 GROUP BY 확장과 관련된 해결 방법은 유사한 기능을 제공할 수 있습니다. 해결 방법의 복잡성은 쿼리 요구 사항에 따라 달라질 수 있습니다.

위 내용은 PostgreSQL의 SELECT DISTINCT ON 쿼리를 MySQL로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.