MySQL IF ELSE lause koos praktiliste näidetega

Viimane uuendus: 6 de noviembre de 2025
  • IF ELSE on MySQL-i tingimusfunktsioon, mis tagastab väärtusi tingimuste põhjal, mis on kasulik SELECT-is ja avaldistes.
  • Täiustatud loogika saavutamiseks saab seda kombineerida operaatorite, agregatsioonide, alampäringute, CASE, IFNULL, REGEXP, DATE_FORMAT ja GROUP BY/HAVING klauslitega.
  • See võimaldab teil andmeid klassifitseerida, nullväärtusi käsitleda ja kirjete kohta dünaamilisi sõnumeid genereerida, kuid liigne pesastamine võib mõjutada loetavust ja jõudlust.
kui muidu mysql koos näidetega

Selles artiklis näitan teile, kuidas kasutada MySQL IF ELSE lauset koos näidetega, et parandada oma päringuid ja saada täpsemaid tulemusi. Nende 18 praktilise näite abil õpime seda võimsat tööriista kasutama ja andmebaasist maksimumi võtma. Uurime tegelikke juhtumeid, kus IF ELSE kasutamine muudab, alates tingimusandmete valikust kuni keerukate toimingute tegemiseni. Kas olete valmis? Noh, lähme sinna! Olge valmis selle tehnika valdamiseks ja viige oma SQL-oskused järgmisele tasemele.

Mis on IF ELSE lause MySQL-is?

Enne näidetesse sukeldumist on oluline mõista, mis on MySQL-i lause IF ELSE. Põhimõtteliselt on see tingimuslik struktuur, mis võimaldab meil sooritada erinevaid toiminguid sõltuvalt sellest, kas teatud tingimus on täidetud või mitte. See tähendab, et kui tingimus on tõene, siis käivitatakse üks koodiplokk ja kui see on väär, siis käivitatakse erinev koodiplokk.

MySQL IF ELSE avaldus koos näidetega

Siin on tabel, kus on loetletud 18 näidet, mida selles artiklis näeme:

näide kirjeldus
1 IF ELSE põhikasutus
2 KUI MUUD, mitme tingimusega
3 Pesastatud KUI MUU
4 KUI MUUD, loogiliste operaatoritega
5 KUI MUUD, liitmisfunktsioonidega
6 KUI VEEL alampäringutega
7 KUI MUU muutujatega
8 KUI MUUD, koos CASE-ga
9 KUI MUU IFNULL-iga
10 KUI VEEL NULLIF-iga
11 KUI VEEL ON OLEMAS
12 KUI MUU IN-iga
13 KUI VEEL koos BETWEENiga
14 KUI VEEL LIKE-ga
15 KUI MUUD, REGEXP-iga
16 KUI MUU DATE_FORMAT
17 KUI VEEL GROUP_CONCAT
18 KUI VEEL OMAMISEL

1. IF ELSE põhikasutus

Vaatame alustuseks lihtsat näidet. Oletame, et meil on tabel nimega "tooted" järgmiste väljadega: id, nimi, hind ja laoseis. Soovime saada toote nimetust ja sõnumit, kas see on laos või mitte. Saame seda teha järgmiselt:

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

Sel juhul on tingimus stock > 0. Kui see on täidetud, kuvatakse teade "Laos" ja kui see ei ole täidetud, siis "Otsas laos".

2. KUI MUU mitme tingimusega

Saame kasutada ka IF ELSE mitme tingimusega. Oletame näiteks, et tahame saada toote nime ja sõnumi, mis näitab, kas hind on suurem kui 100, väiksem kui 50 või vahemikus 50 kuni 100. Saame seda teha järgmiselt:

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

Sel juhul kasutame erinevate tingimuste hindamiseks pesastatud IF ELSE lauseid.

3. Pesastatud KUI MUU

Nagu nägime eelmises näites, saame erinevate tingimuste hindamiseks pesastada mitu IF ELSE lauset. Vaatame teist näidet. Oletame, et tahame saada toote nime ja sõnumi, mis näitab, kas laoseis on suurem kui 100, väiksem kui 10 või vahemikus 10 kuni 100. Samuti, kui laoseis on väiksem kui 10, tahame näidata, kas see on 0 või mitte. Saame seda teha järgmiselt:

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

Sel juhul kasutame kõigi vajalike tingimuste hindamiseks kolme pesitsustasandit.

4. KUI MUU loogiliste operaatoritega

Samuti saame kombineerida IF ELSE loogiliste tehtemärkidega, nagu AND ja OR. Näiteks oletame, et soovime saada toote nime ja sõnumit, mis näitab, kas hind on suurem kui 100 ja laovaru on väiksem kui 10. Saame seda teha järgmiselt:

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

Sel juhul on tingimus precio > 100 AND stock < 10. Kui mõlemad tingimused on täidetud, kuvatakse teade 'Urgent replenishment' ja kui need ei ole täidetud, siis "OK".

5. KUI MUU koos liitmisfunktsioonidega

Saame kombineerida IF ELSE liitmisfunktsioonidega nagu SUM, AVG, MAX jne. Näiteks oletame, et tahame saada kogumüügi ja sõnumi, mis näitab, kas oleme ületanud eesmärgi 10000 XNUMX või mitte. Saame seda teha järgmiselt:

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

Sel juhul arvutame kogumüügi SUM-iga ja seejärel kasutame IF ELSE-i, et kuvada teade selle põhjal, kas sihtmärk on ületatud või mitte.

  Mis on võõrvõtme eesmärk andmebaasis? Ülim teejuht

6. KUI MUU koos alampäringutega

Samuti saame IF ELSE funktsiooni kasutada alampäringute puhul . Näiteks oletame, et tahame saada toodete nimesid ja teadet, mis näitab, kas nende hind on kõrgem kui kõigi toodete keskmine hind. Saame seda teha nii:

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;

Sel juhul kasutame alampäringut kõigi toodete keskmise hinna arvutamiseks ja seejärel võrdleme iga üksikut hinda selle väärtusega, kasutades IF MUU.

7. IF ELSE muutujatega

Väärtuste salvestamiseks ja kasutamiseks päringutes saame kasutada IF ELSE koos muutujatega. Oletame näiteks, et tahame saada kogumüügi ja sõnumi, mis näitab, kas oleme ületanud muutujasse salvestatud eesmärgi. Saame seda teha järgmiselt:

SET @objetivo = 10000;

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

Sel juhul määratleme kõigepealt muutuja @objetivo väärtusega 10000 ja siis kasutame seda tingimusel IF ELSE.

8. KUI MUUD, koos CASE-ga

Teine viis IF ELSE kasutamiseks on kombineerida see CASE-lausega . Näiteks oletame, et tahame saada toote nime ja hinnaklassifikatsiooni „odav“, „keskmine“ või „kallis“, mis põhineb teatud vahemikel. Saame seda teha nii:

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

Sel juhul kasutame CASE-i erinevate tingimuste hindamiseks ja tulemuse põhjal väärtuse määramiseks. See on alternatiivne viis sama toimimiseks, mida pesastatud IF ELSE lausetega.

9. KUI MUU koos IFNULL-iga

Funktsioon IFNULL võimaldab meil oma päringutes käsitleda nullväärtusi. Saame selle kombineerida funktsiooniga IF ELSE, et määrata vaikeväärtus, kui näeme nullväärtust. Oletagem näiteks, et tahame saada toote nime ja selle hinda, aga kui hind on null, tahame kuvada teadet „Pärising”. Saame seda teha järgmiselt:

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

Sel juhul kasutame IFNULL-i, et hinnata, kas hind on null, ja kui jah, siis kuvatakse nullväärtuse asemel teade „Päring”.

10. KUI MUU NULLIF-iga

Funktsioon NULLIF on sarnane funktsiooniga IFNULL, kuid nullväärtuste käsitlemise asemel võimaldab see võrrelda kahte väärtust ja tagastada NULL, kui need on võrdsed. Saame selle kombineerida funktsiooniga IF ELSE, et määrata alternatiivne väärtus, kui teatud tingimus on täidetud. Oletagem näiteks, et tahame saada toote nime ja selle hinda, aga kui hind on 0, tahame kuvada teadet "Tasuta". Saame seda teha järgmiselt:

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

Sel juhul kasutame NULLIF-i, et võrrelda hinda 0-ga ja tagastada NULL, kui need on võrdsed. Seejärel hindame IF ELSE abil, kas NULLIF-i tulemus on NULL, ja kui jah, siis kuvame hinna asemel sõnumi "Tasuta".

11. KUI VEEL ON OLEMAS

Klausel EXISTS võimaldab meil kontrollida, kas alampäringus on mõni kirje, mis vastab teatud tingimusele. Saame selle kombineerida IF ELSE-ga, et teha otsuseid tulemuse põhjal. Näiteks oletame, et tahame saada klientide nimesid ja sõnumit, mis näitab, kas nad on tellimuse esitanud või mitte. Saame seda teha järgmiselt:

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

Sel juhul kasutame alampäringuga EXISTS, et kontrollida, kas iga kliendi jaoks on tellimusi. Seejärel kasutame tulemusel põhineva sõnumi kuvamiseks funktsiooni IF ELSE.

12. IF ELSE koos IN

IN operaator võimaldab meil kontrollida, kas väärtus on väärtuste loendis. Saame selle kombineerida IF ELSE-ga, et teha otsuseid tulemuse põhjal. Oletame näiteks, et tahame saada toodete nimesid ja sõnumit, mis näitab, kas need kuuluvad kategooriasse „Elektroonika” või „Kodu”. Saame seda teha järgmiselt:

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

Sel juhul kasutame IN, et kontrollida, kas tootekategooria on loetletud jaotises „Elektroonika” või „Kodu”. Seejärel kasutame tulemusel põhineva sõnumi kuvamiseks funktsiooni IF ELSE.

  10 mõjuvat põhjust: milleks andmebaas on mõeldud

13. IF ELSE koos BETWEENiga

Operaator BETWEEN võimaldab meil kontrollida, kas väärtus jääb väärtuste vahemikku. Saame selle kombineerida IF ELSE-ga, et teha otsuseid tulemuse põhjal. Oletame näiteks, et tahame saada toodete nime ja sõnumi, mis näitab, kas nende hind jääb 50 ja 100 vahele. Saame seda teha järgmiselt:

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

Sel juhul kontrollime BETWEEN abil, kas toote hind jääb 50 ja 100 vahele. Seejärel kuvame tulemuse põhjal teate IF ELSE abil.

14. KUI VEEL LIKE-ga

Operaator LIKE võimaldab meil otsida tekstistringidest mustreid. Saame selle kombineerida IF ELSE-ga, et teha otsuseid tulemuse põhjal. Oletame näiteks, et tahame saada toodete nimesid ja sõnumit, mis näitab, kas nende nimi sisaldab sõna „iPhone”. Saame seda teha järgmiselt:

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

Sel juhul kontrollime LIKE abil, kas toote nimi sisaldab sõna 'iPhone'. Seejärel kasutame tulemusel põhineva sõnumi kuvamiseks funktsiooni IF ELSE.

15. KUI MUUD, REGEXP-iga

REGEXP operaator võimaldab meil otsida tekstistringidest keerukamaid mustreid regulaaravaldiste abil . Saame seda kombineerida IF ELSE operaatoriga, et tulemuse põhjal otsuseid langetada. Näiteks oletame, et tahame saada klientide nimesid ja teate, mis näitab, kas nende e-posti aadress on kehtiv või mitte. Saame seda teha nii:

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;

Sel juhul kasutame regulaaravaldisega REGEXP-i, et kontrollida, kas kliendi meiliaadress vastab kehtivale vormingule. Seejärel kasutame tulemusel põhineva sõnumi kuvamiseks funktsiooni IF ELSE.

16. KUI MUU, DATE_FORMAT

Funktsioon DATE_FORMAT võimaldab meil päringutes kuupäevi vormindada. Saame selle kombineerida IF ELSE-ga, et teha otsuseid tulemuse põhjal. Näiteks oletame, et tahame saada tellimuste nimesid ja sõnumit, mis näitab, kas need tehti nädalavahetusel või mitte. Saame seda teha järgmiselt:

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

Sel juhul kasutame tellimuse kuupäeva nädalapäeva leidmiseks vormingut DATE_FORMAT (0 pühapäevaks, 6 laupäevaks). Seejärel kontrollime koos IN-ga IF ELSE, et kontrollida, kas päev on 0 või 6, ja kuvada tulemuse põhjal teade.

17. KUI MUU koos rühmaga GROUP_CONCAT

Funktsioon GROUP_CONCAT võimaldab meil liita väärtusi mitmest reast üheks stringiks. Saame selle kombineerida IF ELSE-ga, et teha otsuseid tulemuse põhjal. Oletame näiteks, et tahame saada kliendi nime ja sõnumi, mis näitab, kas ta ostis iPhone'i või Samsungi. Saame seda teha järgmiselt:

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;

Sel juhul kasutame iga kliendi ostetud toodete nimede ühendamiseks gruppi GROUP_CONCAT. Seejärel kasutame funktsiooni IF ELSE koos LIKE-ga, et kontrollida, kas saadud string sisaldab 'iPhone'i või Samsungi' ja kuvame tulemuse põhjal sõnumi.

18. KUI VEEL OMAMISEL

HAVING -klausel võimaldab meil filtreerida GROUP BY päringu tulemusi teatud tingimuste alusel. Saame seda kombineerida IF ELSE-klausliga, et teha tulemuse põhjal otsuseid. Näiteks oletame, et tahame saada tellimuste arvu kliendi kohta ja teate, mis näitab, kas tegemist on "VIP-kliendiga" (rohkem kui 10 tellimust) või "püsikliendiga". Saame seda teha nii:

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;

Sel juhul kasutame tellimuste rühmitamiseks klientide järgi funktsiooni GROUP BY ja loendame iga tellimuste arvu COUNT abil. Seejärel kasutame HAVING-i, et filtreerida välja ainult need kliendid, kellel on rohkem kui 5 tellimust. Lõpuks kasutame IF ELSE-i, et kuvada teade selle põhjal, kas tellimuste koguarv on suurem kui 10 või mitte.

  SQL Lite Mida see pakub?

KKK kohta IF ELSE MySQL koos näidetega

1. Mis on IF ELSE avaldus MySQL-is?

MySQL -i IF ELSE lause on tingimuslik struktuur , mis võimaldab meil täita erinevaid toiminguid olenevalt sellest, kas teatud tingimus on täidetud või mitte.

2. Kuidas kasutada MySQL-is käsku IF ELSE?

MySQL-i lause IF ELSE põhisüntaks on järgmine:

IF(condición, valor_si_verdadero, valor_si_falso)

3. Kas MySQL-is saab pesastada mitu IF ELSE lauset?

Jah, saate pesastada mitu IF ELSE avaldust, et hinnata erinevaid tingimusi ja teha tulemuste põhjal otsuseid.

4. Kas IF ELSE saab kombineerida teiste MySQL-i funktsioonide ja klauslitega?

Jah, IF ELSE saab kombineerida paljude teiste MySQL-i funktsioonide ja klauslitega, nagu koondfunktsioonid, alampäringud, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT, HAVING ja palju muud.

5. Mis vahe on MySQL-is IF ELSE ja CASE vahel?

Nii IF ELSE kui ka CASE võimaldavad meil teatud tingimustel teha erinevaid toiminguid. Peamine erinevus seisneb selles, et IF ELSE-i kasutatakse ühe tingimuse hindamiseks ja toimingu sooritamiseks, kui see on täidetud või mitte, samas kui CASE-d kasutatakse mitme tingimuse hindamiseks ja erinevate toimingute tegemiseks tulemuse põhjal.

6. Kas IF ELSE kasutamisel MySQL-is on mingeid piiranguid?

IF ELSE kasutamisel MySQL-is pole olulisi piiranguid peale hinnatavate tingimuste loogika ja süntaksi piirangud. Siiski on oluline märkida, et IF ELSE liig- või väärkasutus võib päringu jõudlust mõjutada ning koodi lugemist ja hooldamist raskendada.

IF ELSE MySQL järeldus näidetega

Selles artiklis õppisime, mis on MySQL-i IF ELSE-lause ja kuidas seda kasutatakse erinevate toimingute täitmiseks teatud tingimuste alusel. Oleme näinud 18 praktilist näidet IF ELSE-lause kasutamisest ja selle kombineerimisest teiste MySQL-i funktsioonide ja klauslitega, näiteks koondfunktsioonide, alampäringute, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT ja HAVING.

Loodan, et need näited olid abiks ja aitavad teil paremini mõista, kuidas IF ELSE'i oma MySQL-i päringutes kasutada . Ja ärge unustage seda artiklit oma sõprade ja kolleegidega jagada, kui see teile huvitav tundus!