2014-09-12 3 views
0

에서 create_date 및 UPDATE_DATE 주문에 테이블이기본적 널 내 데이터베이스에서 MySQL을

student 
======= 
name 
create_date timestamp current_timestamp 
update_date timestamp null 

업데이트 날짜처럼이되는 방법.

문제는, 내가 UPDATE_DATE이 있다면, 나는 UPDATE_DATE가 null의 경우, 다음 create_date를 사용하여 UPDATE_DATE을 사용하고자하는 날짜가 기록을 주문하고 싶은 것입니다

쿼리를 변경하는 방법

간단히

Select name from student order_by create_date desc 

내 사례를 충족 시키려면?

덕분에 많은

당신은 지정된 값을

시키는 ANSI 표준 표현을 반환 식을 사용할 수 있습니다

+1

에 의해 순서대로 그 중 하나와 같은 표현을 사용하여, 나는 처음 create_date하는 UPDATE_DATE 설정을 제안, 업데이트 할 때마다 업데이트되도록하십시오. –

답변

1

는 것

MySQL의에서, 우리는을 반환 할 수있는 몇 가지 기능을 가지고
CASE WHEN update_date IS NOT NULL THEN update_date ELSE create_date END 

동일한 결과 :

IF(update_date IS NOT NULL, update_date, create_date) 
또는,210
IFNULL(update_date,create_date) 

또는

COALESCE(update_date,create_date) 

다른 메모에서 절

ORDER BY IFNULL(update_date,create_date) DESC 
+0

전에 codeigniter에서 $ this-> db-> order_by ('ifnull (update_date, create_date)', 'DESC') 작업을했습니다. 원인 SQL 오류, 필드 이름을 이스케이프 생각하십니까? 덕분에 – user782104

+1

CodeIgniter에서는 사용자 정의 문자열을 전달할 수 있다고 생각합니다. 그러나 'DESC' 키워드가 별도의 인수가 아닌 문자열의 일부라고 생각합니다. 시도해보십시오 :'-> order_by ('IFNULL (update_date, create_date) DESC');' – spencer7593