2016-06-21 22 views
2

muss ich date in concat innerhalb group_concat sortieren, während meine Abfrage fein ausgeführt wird:MySQL: Wie sortiere ich, wenn ich concat in group_concat verwende?

SELECT 
    report.`Name`, 
    GROUP_CONCAT(
     CONCAT(
     "[", 
     DATE(report.Date) --(not working) order by DATE(report.Date) , 
     ',', 
     report.ProductPrice --(not working) order by DATE(report.ProductPrice) , 
     "]" 
    ) 
    ) AS ProductPrice 
    FROM report 
GROUP BY report.Name ; 

enter image description here

+0

arbeiten, wenn ich Concat verwenden dann durch Anschläge funktionstüchtig gibt Fehler – skhurams

+1

'CONCAT' ist eine Funktion, Sie kann Klauseln in Funktionen (außer einigen Fensterfunktionen) nicht verwenden. Sie müssen die Anweisung OUTSIDE der Funktion 'CONCAT()' ausführen. Außerdem können Sie nicht mehr als eine ORDER BY-Klausel in einem GROUP_CONCAT haben. – Pred

Antwort

4

Sie sollten es in group_concat verwenden, nicht concat:

group_concat(
    concat('[', date(report.Date), ',', report.ProductPrice, ']') 
    order by date(report.Date) desc 
) 
0

Sie versuchen, die ORDER BY Klauseln als Argumente zu CONCAT(), die das nicht unterstützt (hauptsächlich weil es keinen Sinn macht, einen einzelnen Wert zu sortieren). Die Signatur für GROUP_CONCAT() zeigt, dass ist, wo Sie haben sie zu setzen:

GROUP_CONCAT([DISTINCT] expr [,expr ...] 
      [ORDER BY {unsigned_integer | col_name | expr} 
       [ASC | DESC] [,col_name ...]] 
      [SEPARATOR str_val]) 
0

Hope this

SELECT report.`Name`,GROUP_CONCAT(CONCAT("[",DATE(report.Date) --(NOT working),',',report.ProductPrice --(NOT working)),"]") ORDER BY DATE(report.ProductPrice) AS ProductPrice 
    FROM report 
GROUP BY report.Name ;