집 >데이터 베이스 >MySQL 튜토리얼 >사용자 이메일 주소를 최신 3개만 표시하는 열로 바꾸는 방법은 무엇입니까?
사용자 이메일 주소를 열로 변환하여 최신 기록 표시
각 사용자의 여러 이메일 주소를 나열하는 테이블이 있다고 가정해 보겠습니다. 목표는 이러한 이메일을 생성 날짜를 기준으로 "가장 최근" 3개의 주소를 표시하는 열로 바꾸는 것입니다. 그러면 다음과 같은 출력 테이블이 생성됩니다.
user_name | user_id | email1 | email2 | email3 |
---|---|---|---|---|
Mary | 123 | [email protected] | [email protected] | [email protected] |
Joe | 345 | [email protected] | (NULL) | (NULL) |
이 전치를 달성하려면 tablefunc 모듈에서 crosstab() 함수를 사용할 수 있습니다.
<code class="language-sql">SELECT * FROM crosstab( $$SELECT user_id, user_name, rn, email_address FROM ( SELECT u.user_id, u.user_name, e.email_address , row_number() OVER (PARTITION BY u.user_id ORDER BY e.creation_date DESC NULLS LAST) AS rn FROM usr u LEFT JOIN email_tbl e USING (user_id) ) sub WHERE rn <= 3 $$, $$SELECT generate_series(1,3)$$ ) AS ct (user_id int, user_name text, email1 text, email2 text, email3 text);</code>
외부 SELECT
문은 사용자별 데이터를 추출하여 row_number()
기능을 기반으로 가장 최근 이메일 주소 3개로 결과를 제한합니다. 그런 다음 crosstab()
함수는 이러한 이메일을 열로 바꾸어 누락된 값이 NULL로 표시되도록 합니다.
위 내용은 사용자 이메일 주소를 최신 3개만 표시하는 열로 바꾸는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!