2016-06-13 12 views
1

Tabelle user Struktur:mysql, um durch zwei Unix-Zeit Spalten kombinieren

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 | 
+------------------------------------------------------+ 

ich diese SQL bin mit:

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

Wie zwei Spalten Zeit kombinieren ab zu sortieren?

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

weiteres Beispiel Antwort für sagi

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

Ich mag, dass (DESC) sortieren möchten

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

Was Ihr erwartetes Ergebnis ist? – Blank

+2

'SELECT * FROM Benutzer ORDER BY Koaleszenz (time1, time2) DESC' –

+0

Danke juergen, aber das Ergebnis immer noch wie ORDER BY time1 DESC, time2 DESC – Sky

Antwort

1

Dies ist bedingte Bestellung unter Verwendung von CASE EXPRESSION:

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

Könnte auch geschrieben werden als:

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

Sie haben keine erwarteten Ergebnisse liefern, und Sie nicht sagen, durch die Spalte sollte das Ergebnis sowohl time1,time2 sind nicht NULL falls bestellt werden, so dass ich davon ausgegangen, Sie will es von der ersten Spalte bestellt werden. Wenn das nicht der Fall ist, ersetzen Sie time1 durch time2.

Try this:

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

Danke, aber das Ergebnis immer noch ORDER BY 'time1' DESC,' time2' DESC – Sky

+0

Wie soll es bestellt werden ??? @Sky – sagi

+0

Ich hatte meinen Themeninhalt bearbeiten. :) – Sky

Verwandte Themen