Tag Archive for order by

GROUP_CONCAT() Function

MyQL har en meget smart funktion til de der ønsker at smide et udtræk ud på en linje så de spare selve at skille disse ting op med eks. Komma, vil lave et udtræk som trækker alle de lande der tilhøre Thailand ud og liste dem derefter på 1 linje isted for X antal row.

SELECT GROUP_CONCAT( Language ) AS Language FROM CountryLanguage WHERE CountryCode = ’THA’;
return: Languages = Chinese, Khmer, Kuy, Lao, Malay, Thai

Skulle slutbruger nu ikke være tilfræs med at det kommer med komma skilte ord kan du sel lave det om til at komme med det tegn du har løst til eks.

GROUP_CONCAT( Language SEPARATOR ’ – ’  )

Som så adslikker hvert ord med – isted for , Hvis du er i mod gerne vil sortere den måde dette udtræk bliver listet ud på kan du gøre det inde i din GROUP_CONCAT() funktion så leds.

GROUP_CONCAT( Language ORDER BY Language DESC )

Hvor den efter fulgt lister det ud i den nye række følge, skulle man være uheldig og side med de samme navne i en database hvor man gerne vil have de samme navne sortert fra kan man bruger her DISTINCT inde i GROUP_CONCAT() også .

GROUP_CONCAT( DISTINCT Lnguage )

Så vil den automatisk sortere alle der er 2 af fra så de kun bliver vist en enkle gang, GROUP_CONCAT() hopper automatisk over NULL værdier.

Limit af en select

MySQL understøtter LIMIT inde i en SELECT, det  gør at du kan fortælle MySQL hvor meget der må kommer med ud af et row.

LIMIT kan inde holde 1 eller 2 værdier.

LIMIT row_count
LIMIT skip_count, row_count

Hver værdig skal være en int ( heltal ) og ikke en variable ( string ) værdi.

Når du indtastter et tal tager den row nummer 1 fra din table og retuerene så X antal rækker som du har bedt om

SELECT * FROM Country LIMIT 10;

Hvis du gerne vil have vil have fra nummer 20 og de nsæste 10 udtrukket vil det se sådan her ud.

SELECT * FROM Country LIMTI 20, 10;

Det er tit en fordel at benytte ORDRE BY funktionen til at udskefeisere dine udvalg nået mere så de også bliver mere presise.

SELECT * FROM Country ORDER BY Id DESC LIMIT 1;

Eks. Når der skal laves et søge felt med flere sider på kan og vil en SQL tit se ud i stil med denne

SELECT * FROM t ORDER BY Id DESC LIMTI 0, 20;
SELECT * FROM t ORDER BY Id DESC LIMTI 20, 20;
SELECT * FROM t ORDER BY Id DESC LIMTI 40, 20;
SELECT * FROM t ORDER BY Id DESC LIMTI 60, 20;
…..

Du skal huske selv om du bruger LIMIT og har 1.000.000 rækker i MySQL og vil have fat i de 10 sidste skal den løbe hele databasen igennem for at få de sidste 10, derfor er det en god ide at benytte WHERE statement for at reducere databasens udtræk.

Navngive colum i en select

Som standart er en colum ( række ) det samme navn som der står i database men dette kan ændres ved at benytte AS statement.

SELECT felt AS feltnavn FROM t;

du kan bruge det nye navn til at referer i GROUP BY, HAVING eller ORDER BY statement.