MAX (MySQL): verschil tussen versies
Naar navigatie springen
Naar zoeken springen
(2 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
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 in een variabele == | ||
+ | |||
+ | ''So far-so good:'' | ||
+ | |||
+ | <pre> | ||
+ | select max(length(tools_05_de)) from tools_tmp; | ||
+ | |||
+ | > 2867 | ||
+ | </pre> | ||
+ | |||
+ | En dit werkt ook - gewoon in een script: | ||
+ | |||
+ | <pre> | ||
+ | set @i=5; | ||
+ | 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> | ||
+ | |||
+ | == Zie ook == | ||
+ | |||
+ | * [[Greatest (MySQL)]] - Om twee scalairs met elkaar te vergelijken | ||
== Bronnen == | == Bronnen == | ||
* https://dev.mysql.com/doc/refman/5.0/en/example-maximum-column.html | * https://dev.mysql.com/doc/refman/5.0/en/example-maximum-column.html |
Huidige versie van 27 mei 2019 om 08:14
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