>데이터 베이스 >MySQL 튜토리얼 >CASE 문을 사용하여 MySQL의 여러 타임스탬프 열을 기반으로 행을 정렬하는 방법은 무엇입니까?

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

Susan Sarandon
Susan Sarandon원래의
2024-11-15 09:59:02664검색

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 그룹 내에서 정렬되지만 결합된 타임스탬프로는 정렬되지 않는 출력이 생성됩니다. ordering.

원하는 순서를 얻으려면 약간 수정된 쿼리를 사용할 수 있습니다.

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 

이 수정된 쿼리에서는 ID 열에 관계없이 timestamp_one과 timestamp_two가 모두 순서 지정 대상으로 간주됩니다. WHERE 조건과 일치합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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