webForumDet fria alternativet

Max() funkar inte som tänkt

Databaser & SQL

1 svar · 189 visningar · startad av cyprys

Medlem sedan dec. 20003 563 inlägg
Frågan#1

Jag har en kolumn "bid" insatt som int(11) och skall ta ut maxbeloppet, vilket inte fungerar som tänkt.

SELECT konto, max(bid) as bud 
FROM bidding 
GROUP BY 1 ORDER BY 2 DESC

Detta fungerar till en gräns att resultat kommer fram men inte rätt maxvärde. Det står nämligen bara noll för max(bid).

Så jag testade på en aning max(trim(bid)) och helt plötsligt som kom det fram värde, men bara de högsta utifrån den första siffran. Alltså som att kolumnen hade varit av typen char.
Det finns numeriska högre värden.

Använder .net och mySQL 4.1 och undrar om någon kan gissa vad felet ligger? Det borde sorteras numerisk, eller?

Medlem sedan dec. 20003 563 inlägg
#2

Löste det såhär

SELECT accountid, bid
FROM bidding t1
WHERE bid=(SELECT MAX(bid) 
            FROM bidding t2 WHERE t1.accountid = t2.accountid)
ORDER BY 2 DESC

Förstår ändå inte riktigt varför det första inte fungerar.

r/ När jag kollade datatypen för värdet efter jag körde trim så var det string, annars int64 hela tiden.

247 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)