2016-03-31 3 views
1

Ich versuche, die richtige ORDER BY für meine MySQL-Abfrage zu bekommen, aber ich kann die Reihenfolge nicht korrekt erhalten.MySQL-Reihenfolge nach erster Spalte, nach zweiter Spalte sortiert

Ich habe zwei Spalten:

  1. breaking_news = Werte sind NULL oder 1
  2. news_published_dt = Werte werden DATETIME

Wie kann ich irgendwie so, dass die erste Ausgabe breaking_news NOT NULL durch DATETIME sortiert Und dann ist der Rest danach bestellt von DATETIME?

Ich habe dies versucht, aber es gab mir keine Ausgabe

ORDER BY CASE WHEN n.breaking_news IS NOT NULL THEN 1 ELSE 2 END, n.news_published_dt DESC 
+2

SELECT * FROM tabellenname ORDER BY breaking_news DESC, news_published_dt ASC (** AKTUALISIERT **) –

+0

@MalikAsif Arbeitete, danke! :) Bitte posten Sie die Antwort – PhyCoMath

Antwort

1

Sieht aus wie, Sie suchen das:

SELECT 
    * 
FROM 
    tableName 
ORDER BY 
    breaking_news DESC, 
    news_published_dt ASC 
0
SELECT * FROM table_name ORDER BY news_published_dt DESC 
0
select * from 
(select *, 1 Shortby from table 1 where (breaking_news is null) 
union all 
select *, 2 Shortby from table 1 where (breaking_news=1) 
) a 
order by Shortby ,news_published_dt Desc 
-1

ANWENDUNG Dieser ORDER BY CASE WHEN n.breaking_news DANN n.breaking_news ELSE IS NOT NULL 'zzzzzzzzzzzzzzzzzzzzzz' END, n.news_published_dt DESC