>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 조건부 타임스탬프를 기반으로 행을 정렬하는 방법은 무엇입니까?

MySQL에서 조건부 타임스탬프를 기반으로 행을 정렬하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-13 04:46:01415검색

How to Sort Rows Based on a Conditional Timestamp in MySQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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