Príkaz MySQL IF ELSE s praktickými príkladmi

Posledná aktualizácia: 6 novembra 2025
  • IF ELSE je podmienená funkcia v MySQL, ktorá vracia hodnoty na základe podmienok, užitočná v SELECT a výrazoch.
  • Pre pokročilú logiku sa dá kombinovať s operátormi, agregáciami, poddotazmi, klauzulami CASE, IFNULL, REGEXP, DATE_FORMAT a GROUP BY/HAVING.
  • Umožňuje klasifikovať dáta, spracovať hodnoty null a generovať dynamické správy pre každý záznam, ale nadmerné vnorenie môže ovplyvniť čitateľnosť a výkon.
ak inak mysql s príkladmi

V tomto článku vám ukážem, ako používať príkaz MySQL IF ELSE s príkladmi na zlepšenie vašich dotazov a získanie presnejších výsledkov. Pomocou týchto 18 praktických príkladov sa naučíme, ako používať tento výkonný nástroj a vyťažiť z databázy maximum. Preskúmame skutočné prípady, v ktorých použitie IF ELSE znamená rozdiel, od podmieneného výberu údajov až po vykonávanie zložitých operácií. si pripravený? No poďme tam! Pripravte sa na zvládnutie tejto techniky a posuňte svoje znalosti SQL na ďalšiu úroveň.

Čo je to príkaz IF ELSE v MySQL?

Predtým, ako sa ponoríme do príkladov, je dôležité pochopiť, čo je príkaz IF ELSE v MySQL. V podstate ide o podmienenú štruktúru, ktorá nám umožňuje vykonávať rôzne akcie v závislosti od toho, či je určitá podmienka splnená alebo nie. To znamená, že ak je podmienka pravdivá, vykoná sa jeden blok kódu a ak je nepravdivá, vykoná sa iný blok kódu.

Vyhlásenie MySQL IF ELSE s príkladmi

Tu je tabuľka s 18 príkladmi, ktoré uvidíme v tomto článku:

Príklad popis
1 Základné použitie IF ELSE
2 AK INE s viacerými podmienkami
3 Vnorené IF ELSE
4 IF ELSE s logickými operátormi
5 IF ELSE s agregačnými funkciami
6 IF ELSE s poddotazmi
7 IF ELSE s premennými
8 IF ELSE s CASE
9 IF ELSE s IFNULL
10 IF ELSE s NULLIF
11 IF ELSE s EXISTS
12 AK ELSE s IN
13 AK ELSE s MEDZI
14 AK INÉ s LIKE
15 AK INE s REGEXP
16 AK ELSE s DATE_FORMAT
17 IF ELSE s GROUP_CONCAT
18 IF ELSE s HAVING

1. Základné použitie IF ELSE

Na začiatok sa pozrime na jednoduchý príklad. Predpokladajme, že máme tabuľku s názvom „produkty“ s nasledujúcimi poľami: id, názov, cena a sklad. Chceme získať názov produktu a správu o tom, či je alebo nie je na sklade. Môžeme to urobiť takto:

SELECT nombre, IF(stock > 0, 'Hay stock', 'No hay stock') AS stock 
FROM productos;

V tomto prípade je podmienkou stock > 0. Ak je splnená, zobrazí sa hlásenie 'Na sklade' a ak nie je splnená, zobrazí sa 'Vypredané'.

2. AK INE s viacerými podmienkami

Môžeme tiež použiť IF ELSE s viacerými podmienkami. Povedzme napríklad, že chceme získať názov produktu a správu o tom, či je cena vyššia ako 100, nižšia ako 50 alebo medzi 50 a 100. Môžeme to urobiť takto:

SELECT nombre, 
  IF(precio > 100, 'Caro', 
    IF(precio < 50, 'Barato', 'Precio medio')
  ) AS precio
FROM productos;

V tomto prípade používame vnorené príkazy IF ELSE na vyhodnotenie rôznych podmienok.

3. Vnorené IF ELSE

Ako sme videli v predchádzajúcom príklade, môžeme vnoriť viacero príkazov IF ELSE na vyhodnotenie rôznych podmienok. Pozrime sa na ďalší príklad. Predpokladajme, že chceme získať názov produktu a správu označujúcu, či je zásoba väčšia ako 100, menšia ako 10 alebo medzi 10 a 100. Ak je zásoba menšia ako 10, chceme tiež uviesť, či je 0 alebo nie. Môžeme to urobiť takto:

SELECT nombre,
  IF(stock > 100, 'Stock alto',
    IF(stock < 10, 
      IF(stock = 0, 'Sin stock', 'Stock bajo'),
      'Stock medio'
    )
  ) AS stock
FROM productos;

V tomto prípade používame tri úrovne hniezdenia na vyhodnotenie všetkých potrebných podmienok.

4. IF ELSE s logickými operátormi

Môžeme tiež kombinovať IF ELSE s logickými operátormi ako AND a OR. Povedzme napríklad, že chceme získať názov produktu a správu o tom, či je cena vyššia ako 100 a sklad je nižší ako 10. Môžeme to urobiť takto:

SELECT nombre,
  IF(precio > 100 AND stock < 10, 'Urgente reponer', 'OK') AS estado
FROM productos;

V tomto prípade je podmienkou precio > 100 AND stock < 10. Ak sú splnené obe podmienky, zobrazí sa hlásenie 'Urgentné doplnenie' a ak nie sú splnené, zobrazí sa 'OK'.

5. IF ELSE s agregačnými funkciami

IF ELSE môžeme kombinovať s agregačnými funkciami ako SUM, AVG, MAX atď. Povedzme napríklad, že chceme získať celkové tržby a správu o tom, či sme prekročili cieľ 10000 XNUMX alebo nie. Môžeme to urobiť takto:

SELECT 
  SUM(total) AS total_ventas,
  IF(SUM(total) > 10000, '¡Objetivo superado!', 'No se alcanzó el objetivo') AS mensaje
FROM ventas;

V tomto prípade vypočítame celkový predaj pomocou SUM a potom pomocou IF ELSE zobrazíme správu podľa toho, či bol cieľ prekročený alebo nie.

  Čo sú to nerelačné databázy?

6. IF ELSE s poddotazmi

Funkciu IF ELSE môžeme použiť aj s poddotazmi . Napríklad, predpokladajme, že chceme získať názvy produktov a správu, ktorá by informovala, či je ich cena vyššia ako priemerná cena všetkých produktov. Môžeme to urobiť takto:

SELECT nombre,
  IF(precio > (SELECT AVG(precio) FROM productos), 
    'Precio superior a la media', 
    'Precio inferior o igual a la media'
  ) AS comparacion
FROM productos;

V tomto prípade použijeme poddotaz na výpočet priemernej ceny všetkých produktov a potom porovnáme každú jednotlivú cenu s touto hodnotou pomocou IF ELSE.

7. IF ELSE s premennými

Môžeme použiť IF ELSE spolu s premennými na ukladanie a používanie hodnôt v našich dotazoch. Predpokladajme napríklad, že chceme získať celkový predaj a správu o tom, či sme prekročili cieľ, ktorý sme uložili do premennej. Môžeme to urobiť takto:

SET @objetivo = 10000;

SELECT 
  SUM(total) AS total_ventas,
  IF(SUM(total) > @objetivo, '¡Objetivo superado!', 'No se alcanzó el objetivo') AS mensaje 
FROM ventas;

V tomto prípade najprv definujeme premennú @objetivo s hodnotou 10000 a potom ju použijeme v podmienke IF ELSE.

8. AK INE s CASE

Ďalším spôsobom použitia príkazu IF ELSE je jeho kombinácia s príkazom CASE . Predpokladajme napríklad, že chceme získať názov produktu a cenovú klasifikáciu „Lacný“, „Stredný“ alebo „Drahý“ na základe určitých rozsahov. Môžeme to urobiť takto:

SELECT nombre,
  CASE 
    WHEN precio < 50 THEN 'Barato'
    WHEN precio BETWEEN 50 AND 100 THEN 'Medio'
    ELSE 'Caro'
  END AS clasificacion
FROM productos;

V tomto prípade používame CASE na vyhodnotenie rôznych podmienok a priradenie hodnoty na základe výsledku. Je to alternatívny spôsob, ako urobiť to isté ako s vnorenými príkazmi IF ELSE.

9. IF ELSE s IFNULL

Funkcia IFNULL nám umožňuje spracovávať nulové hodnoty v našich dotazoch. Môžeme ho skombinovať s IF ELSE, aby sme priradili predvolenú hodnotu, keď narazíme na nulovú hodnotu. Predpokladajme napríklad, že chceme získať názov produktu a jeho cenu, ale ak je cena nulová, chceme zobraziť správu „Dopyt“. Môžeme to urobiť takto:

SELECT nombre, IFNULL(precio, 'Consultar') AS precio
FROM productos;

V tomto prípade používame IFNULL na vyhodnotenie, či je cena nulová, a ak áno, namiesto nulovej hodnoty zobrazíme správu „Dopyt“.

10. IF ELSE s NULLIF

Funkcia NULLIF je podobná funkcii IFNULL, ale namiesto spracovania hodnôt null nám umožňuje porovnať dve hodnoty a vrátiť hodnotu NULL, ak sú rovnaké. Môžeme ho skombinovať s IF ELSE, aby sme pri splnení určitej podmienky priradili alternatívnu hodnotu. Predpokladajme napríklad, že chceme získať názov produktu a jeho cenu, ale ak je cena 0, chceme zobraziť správu „Zadarmo“. Môžeme to urobiť takto:

SELECT nombre, IF(NULLIF(precio, 0) IS NULL, 'Gratis', precio) AS precio
FROM productos;

V tomto prípade použijeme NULLIF na porovnanie ceny s 0 a vrátime NULL, ak sú rovnaké. Potom pomocou IF ELSE vyhodnotíme, či je výsledok NULLIF NULL, a ak áno, namiesto ceny zobrazíme správu „Zadarmo“.

11. AK INÉ s EXISTUJE

Klauzula EXISTS nám umožňuje skontrolovať, či existuje nejaký záznam, ktorý spĺňa určitú podmienku v poddotaze. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať mená zákazníkov a správu o tom, či zadali objednávku alebo nie. Môžeme to urobiť takto:

SELECT nombre,
  IF(EXISTS(SELECT * FROM pedidos WHERE cliente_id = clientes.id),
    'Con pedidos',
    'Sin pedidos'
  ) AS estado
FROM clientes;

V tomto prípade používame EXISTS s poddotazom na kontrolu, či pre každého zákazníka existujú nejaké objednávky. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.

12. AK INE s IN

Operátor IN nám umožňuje skontrolovať, či je hodnota v zozname hodnôt. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov produktov a správu o tom, či patria do kategórie „Elektronika“ alebo „Domov“. Môžeme to urobiť takto:

SELECT nombre,
  IF(categoria IN ('Electrónica', 'Hogar'),
    'Producto destacado',
    'Producto regular'
  ) AS tipo
FROM productos;

V tomto prípade používame IN na kontrolu, či je kategória produktov uvedená v časti „Elektronika“ alebo „Domov“. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.

  Normálne formuláre v databázach: čo sú a na čo sa používajú?

13. AK ELSE s MEDZI

Operátor BETWEEN nám umožňuje skontrolovať, či je hodnota v rozsahu hodnôt. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov produktov a správu o tom, či je ich cena medzi 50 a 100. Môžeme to urobiť takto:

SELECT nombre,
  IF(precio BETWEEN 50 AND 100,
    'Precio en rango',
    'Precio fuera de rango'
  ) AS rango
FROM productos;

V tomto prípade pomocou BETWEEN skontrolujeme, či je cena produktu medzi 50 a 100. Potom pomocou IF ELSE zobrazíme správu na základe výsledku.

14. AK INÉ s LIKE

Operátor LIKE nám umožňuje vyhľadávať vzory v textových reťazcoch. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov produktov a správu o tom, či ich názov obsahuje slovo „iPhone“. Môžeme to urobiť takto:

SELECT nombre,
  IF(nombre LIKE '%iPhone%',
    'Producto de Apple',
    'Otro producto'
  ) AS tipo
FROM productos;

V tomto prípade používame LIKE na kontrolu, či názov produktu obsahuje slovo 'iPhone'. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.

15. AK INE s REGEXP

Operátor REGEXP nám umožňuje vyhľadávať zložitejšie vzory v textových reťazcoch pomocou regulárnych výrazov . Môžeme ho kombinovať s operátorom IF ELSE a robiť rozhodnutia na základe výsledku. Predpokladajme napríklad, že chceme získať mená zákazníkov a správu s informáciou, či je ich e-mailová adresa platná alebo nie. Môžeme to urobiť takto:

SELECT nombre,
  IF(email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z]{2,}$',
    'Email válido',
    'Email inválido'
  ) AS validacion
FROM clientes;

V tomto prípade používame REGEXP s regulárnym výrazom na kontrolu, či email zákazníka spĺňa platný formát. Potom použijeme IF ELSE na zobrazenie správy na základe výsledku.

16. AK ELSE s DATE_FORMAT

Funkcia DATE_FORMAT nám umožňuje formátovať dátumy v našich dopytoch. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať názov objednávok a správu o tom, či boli zadané cez víkend alebo nie. Môžeme to urobiť takto:

SELECT id,
  IF(DATE_FORMAT(fecha, '%w') IN (0, 6),
    'Fin de semana',
    'Día de semana'
  ) AS dia
FROM pedidos;

V tomto prípade používame DATE_FORMAT na získanie dňa v týždni od dátumu objednávky (0 pre nedeľu, 6 pre sobotu). Potom pomocou IF ELSE s IN skontrolujeme, či je deň 0 alebo 6, a na základe výsledku zobrazíme správu.

17. AK ELSE s GROUP_CONCAT

Funkcia GROUP_CONCAT nám umožňuje zreťaziť hodnoty z viacerých riadkov do jedného reťazca. Môžeme to skombinovať s IF ELSE, aby sme sa rozhodovali na základe výsledku. Povedzme napríklad, že chceme získať meno zákazníka a správu o tom, či si zakúpil „iPhone“ alebo „Samsung“. Môžeme to urobiť takto:

SELECT c.nombre,
  IF(GROUP_CONCAT(p.nombre) LIKE '%iPhone%', 
    'Compró iPhone',
    IF(GROUP_CONCAT(p.nombre) LIKE '%Samsung%',
      'Compró Samsung',
      'No compró iPhone ni Samsung'
    )
  ) AS mensaje
FROM clientes c
JOIN pedidos pe ON c.id = pe.cliente_id
JOIN productos p ON pe.producto_id = p.id
GROUP BY c.id;

V tomto prípade používame GROUP_CONCAT na zreťazenie názvov produktov zakúpených každým zákazníkom. Potom pomocou IF ELSE s LIKE skontrolujeme, či výsledný reťazec obsahuje „iPhone“ alebo „Samsung“ a na základe výsledku zobrazíme správu.

18. AK INÉ s MAJÚC

Klauzula HAVING nám umožňuje filtrovať výsledky dotazu GROUP BY na základe určitých podmienok. Môžeme ju kombinovať s IF ELSE a robiť rozhodnutia na základe výsledku. Predpokladajme napríklad, že chceme získať počet objednávok na zákazníka a správu s informáciou, či ide o „VIP zákazníka“ (viac ako 10 objednávok) alebo „pravidelného zákazníka“. Môžeme to urobiť takto:

SELECT c.nombre, COUNT(p.id) AS total_pedidos,
  IF(COUNT(p.id) > 10,
    'Cliente VIP',
    'Cliente regular'
  ) AS tipo_cliente
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id
GROUP BY c.id
HAVING COUNT(p.id) > 5;

V tomto prípade používame GROUP BY na zoskupenie objednávok podľa zákazníka a spočítanie počtu objednávok pre každú s COUNT. Potom pomocou HAVING odfiltrujeme len zákazníkov s viac ako 5 objednávkami. Nakoniec používame IF ELSE na zobrazenie správy na základe toho, či je celkový počet objednávok väčší ako 10 alebo nie.

  SQL SKUPINA PODĽA SÚČTU: Tipy a triky pre efektívne dotazy

Časté otázky o IF ELSE MySQL s príkladmi

1. Čo je to príkaz IF ELSE v MySQL?

Príkaz IF ELSE v MySQL je podmienená štruktúra , ktorá nám umožňuje vykonávať rôzne akcie v závislosti od toho, či je splnená určitá podmienka alebo nie.

2. Ako použiť príkaz IF ELSE v MySQL?

Základná syntax príkazu IF ELSE v MySQL je nasledovná:

IF(condición, valor_si_verdadero, valor_si_falso)

3. Môže byť v MySQL vnorených viacero príkazov IF ELSE?

Áno, môžete vnoriť viacero príkazov IF ELSE na vyhodnotenie rôznych podmienok a rozhodovanie na základe výsledkov.

4. Dá sa IF ELSE kombinovať s inými funkciami a klauzulami MySQL?

Áno, IF ELSE je možné kombinovať s mnohými ďalšími funkciami a klauzulami MySQL, ako sú agregačné funkcie, poddotazy, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT, HAVING a ďalšie.

5. Aký je rozdiel medzi IF ELSE a CASE v MySQL?

IF ELSE aj CASE nám umožňujú vykonávať rôzne akcie na základe určitých podmienok. Hlavný rozdiel je v tom, že IF ELSE sa používa na vyhodnotenie jednej podmienky a vykonanie akcie, ak je splnená alebo nie, zatiaľ čo CASE sa používa na vyhodnotenie viacerých podmienok a vykonanie rôznych akcií na základe výsledku.

6. Existujú nejaké obmedzenia pri používaní IF ELSE v MySQL?

Neexistujú žiadne významné obmedzenia používania IF ELSE v MySQL, okrem obmedzení logiky a syntaxe hodnotených podmienok. Je však dôležité poznamenať, že nadmerné alebo nesprávne používanie IF ELSE môže ovplyvniť výkon dotazu a sťažiť čítanie a údržbu kódu.

Záver IF ELSE MySQL s príkladmi

V tomto článku sme sa dozvedeli, čo je príkaz IF ELSE v MySQL a ako sa používa na vykonávanie rôznych akcií na základe určitých podmienok. Videli sme 18 praktických príkladov použitia príkazu IF ELSE, jeho kombinácie s inými funkciami a klauzulami MySQL, ako sú agregačné funkcie, poddotazy, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT a HAVING.

Dúfam, že tieto príklady boli užitočné a že vám pomôžu lepšie pochopiť, ako používať IF ELSE vo vašich MySQL dotazoch . A nezabudnite zdieľať tento článok so svojimi priateľmi a kolegami, ak vás zaujal!