webForumDet fria alternativet

Sortera på minsta värdet av två kolumner

Databaser & SQL

5 svar · 492 visningar · startad av Baltiz

Medlem sedan maj 200591 inlägg
Frågan#1

Har en tabell med bland annat två kolumner som innehåller heltal. Jag vill göra en ORDER BY det minsta av de två talen.

Följande funkar INTE:

SELECT * FROM table ORDER BY MIN(a,b)

MIN() är ju som bekant en aggregate function, och vill bara funka ihop med GROUP BY, vilket jag ju inte vill använda mig av.

Databasen som används är MySQL.

Medlem sedan apr. 2006409 inlägg
#2

Hur förhåller sig a till b, finns det ett värde i b om det finns ett i a? Du kanske kan få till en lösning mha summan av de två talen.

Medlem sedan maj 200591 inlägg
#3

Ett av problemen med värdet b är att det är -1 om det är "odefinierat". Annars är b alltid mindre än a.
Alltså:
(b == -1) ? a : b

Medlem sedan apr. 2006409 inlägg
#4

Det måste finnas en smidigare lösning på vad det nu är du försöker göra. Vad försöker du göra?

Medlem sedan juni 20008 205 inlägg
#5

Baltiz skrev:

Ett av problemen med värdet b är att det är -1 om det är "odefinierat". Annars är b alltid mindre än a.
Alltså:
(b == -1) ? a : b

SELECT * FROM table ORDER BY CASE b WHEN -1 THEN a ELSE b END CASE
Medlem sedan maj 200591 inlägg
#6

Tack! En CASE-sats gjorde susen.

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)