2016-06-13 2 views
1

таблицы user структуру:MySQL два UnixTime столбцов объединить

id(PK)(int) 
name(varchar) 
time1(int10) unixtime 
time2(int10) unixtime 

SELECT * FROM `user` ORDER BY `time1` DESC,`time2` DESC 


+------------------------------------------------------+ 
| id  | name |  time1  |  time2  | 
+------------------------------------------------------+ 
| 12345  | Joe | 1405605785 | 1406733506 | 
| 12346  | John | 1406733506 |     | 
| 12347  | David |    | 1405684190 | 
+------------------------------------------------------+ 

Я использую этот SQL:

SELECT * FROM `user` ORDER BY `time1` DESC,`time2` DESC 

Как объединить две колонок времени сортировать?

============

более

пример ответа на Саги

+------------------------------------------------------+ 
| id  | name |  time1  |  time2  | 
+------------------------------------------------------+ 
| 12345  | Joe | 1   | 2    | 
| 12346  | John | 5   |     | 
| 12347  | David |    | 4    | 
+------------------------------------------------------+ 

Я хочу разобраться, как этот (DESC)

John (time = 5) 
David (time = 4) 
Joe (time max value = 2) 
+1

Что вы ожидаемый результат? – Blank

+2

'SELECT * FROM user ORDER BY coalesce (time1, time2) DESC' –

+0

Спасибо juergen, но результат по-прежнему похож на ORDER BY time1 DESC, time2 DESC – Sky

ответ

1

Это вызванного условным порядком с использованием CASE EXPRESSION:

SELECT * FROM `user` t 
ORDER BY CASE WHEN t.time1 is null THEN t.time2 ELSE t.time1 END DESC 

Может также быть написано как:

ORDER BY coalesce(t.time1,t.time2) 

Вы не предоставили каких-либо ожидаемых результатов, и вы не сказали, по какой колонке результат должен быть заказан в случае как time1,time2 не NULL, поэтому я предположил, что вы хотите, чтобы его заказали по первому столбцу. Если это не так, замените time1 на time2.

Попробуйте это:

ORDER BY GREATEST(t.time1,t.time2) DESC 
+0

Спасибо, но результат по-прежнему похож на ORDER BY 'time1' DESC,' time2' DESC – Sky

+0

Как вы хотите, чтобы его заказали ??? @Sky – sagi

+0

Я редактировал содержание моей темы. :) – Sky

Смежные вопросы