MySQL ORDER BY CASE 정렬 문제
MySQL에서 ORDER BY 절을 사용하면 지정된 열을 기준으로 쿼리 결과를 정렬할 수 있습니다. 그러나 특정 조건에 따라 여러 열을 정렬할 때 어려움이 발생할 수 있습니다.
다음 시나리오를 고려해보세요.
timestamp_one과 timestamp_two라는 두 개의 열이 있는 테이블이 있습니다. id_one 또는 id_two가 27인 모든 행을 검색해야 합니다. 또한 id_one 또는 id_two가 27인지 여부에 따라 timestamp_one 또는 timestamp_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
행을 정렬하는 대신 각 열을 개별적으로 정렬합니다. 정렬을 위해 단일 타임스탬프로 결합합니다.
이 문제를 해결하려면 다음 수정된 쿼리를 사용할 수 있습니다.
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
이 수정된 쿼리에서는 다음을 사용하여 ORDER BY 절을 단순화합니다. 정렬 순서를 결정하는 단일 CASE 표현식. 이를 통해 id_one 및 id_two 값에 따라 적절한 열(timestamp_one 또는 timestamp_two)을 동적으로 선택하는 결합된 타임스탬프를 기반으로 행을 정렬할 수 있습니다.
위 내용은 MySQL에서 조건부 타임스탬프를 기반으로 행을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!