MAX (MySQL): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
Regel 46: | Regel 46: | ||
Nu wordt er namelijk slechts geaggregeerd over het huidige record - weinig zinvol. | Nu wordt er namelijk slechts geaggregeerd over het huidige record - weinig zinvol. | ||
− | == Waarde opslaan | + | == Waarde opslaan in een variabele == |
− | So far-so good: | + | ''So far-so good:'' |
<pre> | <pre> | ||
Regel 61: | Regel 61: | ||
set @i=5; | set @i=5; | ||
select @i; | select @i; | ||
+ | </pre> | ||
+ | |||
+ | Om de (scalaire) uitkomst van een query op te slaan in een variabele, moet je het select-statement ''binnen haakjes'' plaatsen: | ||
+ | |||
+ | <pre> | ||
+ | set @i = (select max(length(tools_tmp.tools_05_de)) from tools_tmp); | ||
</pre> | </pre> | ||
Versie van 10 nov 2017 11:41
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);