MYSQL ORDER BY CASE 문제
이 질문은 WHERE 조건에 따라 특정 열을 기준으로 행을 정렬하는 데 어려움을 겪습니다. 4개의 행과 타임스탬프 열이 있는 제공된 데이터베이스를 생각해 보세요. 목표는 두 타임스탬프 열이 단일 순서 기준으로 처리되도록 행을 정렬하는 것입니다.
처음에 제공된 쿼리는 id_one 및 id_two 필드를 기준으로 타임스탬프를 개별적으로 정렬합니다.
SELECT * FROM tablename WHERE id_one=27 OR id_two=27 ORDER BY CASE WHEN id_one=27 THEN timestamp_one END DESC, CASE WHEN id_two=27 THEN timestamp_two END DESC
이 접근 방식을 사용하면 행이 각 id_one 또는 id_two 그룹 내에서 정렬되지만 결합된 타임스탬프 순서가 아닌 출력이 생성됩니다.
원하는 순서를 얻으려면 약간 수정된 쿼리를 사용할 수 있습니다.
SELECT id_one, id_two, timestamp_one, timestamp_two FROM tablename WHERE id_one = 27 OR id_two = 27 ORDER BY CASE WHEN id_one=27 THEN timestamp_one WHEN id_two=27 THEN timestamp_two END DESC
이 수정된 쿼리에서는 WHERE 조건과 일치하는 ID 열에 관계없이 timestamp_one과 timestamp_two가 모두 순서 지정 대상으로 고려됩니다. CASE 문은 id_one 및 id_two 값을 기반으로 적절한 타임스탬프를 선택합니다.
이러한 수정으로 인해 원하는 출력이 생성됩니다. 여기서 행은 timestamp_one 및 timestamp_two를 모두 고려하여 단일 타임스탬프 열로 정렬됩니다.
위 내용은 CASE 문을 사용하여 MySQL의 여러 타임스탬프 열을 기반으로 행을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!