CASE 문을 사용하여 MySQL의 여러 타임스탬프 열을 기반으로 행을 정렬하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-15 09:59:02
원래의
579명이 탐색했습니다.

How to Order Rows Based on Multiple Timestamp Columns in MySQL with CASE Statement?

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를 모두 고려하여 단일 타임스탬프 열로 정렬됩니다.


| id_one | id_two | 타임스탬프_원 | timestamp_two |

| 27 | 35 | 9:30 | NULL |

| 35 | 27 | NULL | 9:33 |

| 27 | 35 | 9:34 | NULL |

| 35 | 27 | NULL | 9:35 |

위 내용은 CASE 문을 사용하여 MySQL의 여러 타임스탬프 열을 기반으로 행을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿