20. februar 2014 - 22:26Der er
8 kommentarer og 1 løsning
Speciel dobbelt ORDER BY i MySQL
Hej,
Jeg har en tabel med 3 kolonner: ID (xx) DATE (xxxx-xx-xx) OPENED (0/1)
Jeg ønsker at sortere tabellen efter DATE (nyeste først) - dertil ønsker jeg så, hvis OPENED er 0 (nul), inden for de sidste 5 dage, skal disse øverst (altså en form for overruling/første prioritet).
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
........eller refererer du ikke til åbningstidspunktet, men til rækker i tabellen, hvor datoen er højst fem dage gammel og opened er 0? Og vil du, at disse rækker skal stå øverst, i dato rækkefølge, efterfulgt af alle andre rækker i datorækkefølge? I så fald vil jeg foreslå en løsning med UNION. Nu er det nogen tid siden jeg har været i gang med at beregne datoer (og jeg har drukket for mange øller til at starte nu), så jeg skriver i pseudokode, noget i retning af dette:
SELECT * FROM minTabel WHERE [datoen er højst fem dage gammel] AND opened = 0 ORDER BY date UNION SELECT * FROM minTabel WHERE ID NOT IN (SELECT ID FROM minTabel WHERE [datoen er højst fem dage gammel] AND opened =0) ORDER BY date
IF [spørgeren bekræfter, at dette er problemstillingen] AND [du er rimelig enig i princippet i min pseudokode] AND ([du har dato beregninger på fingerspidserne] OR [du har drukket færre øller end mig]) THEN [så kan du gøre koden færdig og få spørgsmålet lukket]
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.