Gå til innhold

order by - miks verdi fra to kolonner (mysql)


Anbefalte innlegg

Skrevet

Hei,

 

Jeg har en tabell med kommentarer. To av kolonnene heter "skrevet_tid" og "redigert_tid".

 

Jeg ønsker å sortere disse slik at de nyeste kommentarene kommer øverst. Det vil si at dersom et innlegg blir redigert så skal den flyttes opp.

 

Hvordan løser jeg det?

Videoannonse
Annonse
Skrevet (endret)

Du kan gjøre det slik:

SELECT * FROM table ORDER BY IF(redigert_tid>skrevet_tid,redigert_tid,skrevet_tid) DESC,skrevet_tid DESC

 

Dette er sansynligvis veldig ineffektivt hvis tabellen blir stor. Da blir det mer effektivt å legge inn en ekstra kolonne som inneholder den verdien det skal sorteres etter.

Endret av gxi
Skrevet

Sørg for at skrevet_tid = redigert_tid v. create og deretter oppdateres bare redigert_tid v. update. Så er det bare å sortere på redigert_tid. Dersom skrevet_tid <> redigert_tid har raden vært redigert.

Skrevet
Er ikke vits å gjøre det for komplisert. Dette funker for meg, redigerer du et gammelt innslag, spretter den opp på toppen:

 

 

ORDER BY redigert_tid, skrevet_tid

 

Gjør nok ikke det. For det første må du vel nesten sortere DESC for å få synkende rekkefølge,

dvs. nyeste på topp.

 

Men blir ikke helt riktig det heller... et innlegg som i det heletatt *er* redigert uansett når, vil komme foran et som er opprettet senere og derfor er nyere.

 

Det enkle er ofte det beste ... men ikke alltid :o)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...