2011-06-01 4 views
1

MySQLdossiers de commande par horodatage, mais avec ID ÉNUMÉRÉS premier

 
+----+------------+ 
| id | timestamp | 
+----+------------+ 
| 1 | 1306922400 | 
+----+------------+ 
| 2 | 1306926000 | 
+----+------------+ 
| 3 | 1306929600 | 
+----+------------+ 

PHP

$a = mysql_query("SELECT * FROM `table` ORDER BY ?? DESC, `timestamp` DESC"); 

Trier par:

  1. départ où id est égal à 2

  2. Ensuite, par ordre timestamp

ordonnance doit être: 2, 3, 1

+1

LOL première fois que je vois toutes les réponses downvoted. C'est Sparta! – dynamic

+0

Tant de downvotes sans aucune critique, y a-t-il une solution ** non **? D'ailleurs, c'est une réponse valable. –

+0

c'est? lequel un;) – dynamic

Répondre

0
SELECT * FROM `table` ORDER BY `id`!=2 ASC, `timestamp` DESC 
// or 
SELECT * FROM `table` ORDER BY `id`=2 DESC, `timestamp` DESC 
+0

Pourquoi -1? Il renvoie ce que vous voulez. – a1ex07

+0

Est-ce que l'on dit erreur de syntaxe? 'timestamp' devrait être en arrière. Je mets à jour la réponse – a1ex07

+0

La question est un peu floue, mais: "Ordre devrait être: 2, 3, 1" –

-1
$a = mysql_query("SELECT * FROM `table` WHERE id = 2 ORDER BY `timestamp` DESC UNION SELECT * FROM `table` WHERE id != 2 ORDER BY `timestamp DESC"); 
1

vous pouvez utiliser UNION ... Mais je l'éviter. Considérant que je n'ai pas UNION ALL dans la deuxième requête, l'enregistrement avec id = 2 ne sera pas dupliqué.

+0

rofl quel massacre de -1 – dynamic

1
SELECT * FROM `table` where id = 2 
union 
SELECT * FROM `table` where id != 2 order by id, timestamp desc 
+0

des raisons de copier/coller ma réponse?^_^ – dynamic

+0

@ yes123 La réponse de Jody n'est pas identique à la vôtre. –

+0

parce que nous avons soumis en même temps = - \ – Jody

Questions connexes