MAX (MySQL)
max is een aggregerende functie, die de maximale waarde van een kolom. Bv.:
select max(length(tools_tmp.tools_05_de)) from tools_tmp; > 2867
Het resultaat is altijd een scalar. Als je zo'n regel toevoegt aan een select-statement, houd je nog maar één rij over vanwege aggregatie:
select sku, length(tools_01_de), length(tools_02_de), length(tools_03_de), max(length(tools_03_de)) from tools_tmp; > 12 13 14 14
Maar dit werkt ook niet:
select sku, length(tools_01_de), length(tools_02_de), length(tools_03_de), ( select max(length(tools_03_de)) from tools_tmp ) as max_length from tools_tmp; > 1 2 3 3 > 5 6 7 7 > 12 13 14 14
Nu wordt er namelijk slechts geaggregeerd over het huidige record - weinig zinvol.
Waarde opslaan in een variabele
So far-so good:
select max(length(tools_05_de)) from tools_tmp; > 2867
En dit werkt ook - gewoon in een script:
set @i=5; select @i;
Om de (scalaire) uitkomst van een query op te slaan in een variabele, moet je het select-statement binnen haakjes plaatsen:
set @i = (select max(length(tools_tmp.tools_05_de)) from tools_tmp);
Zie ook
- Greatest (MySQL) - Om twee scalairs met elkaar te vergelijken