MySQL IF ELSE-erklæringen med praktiske eksempler

Sidste ændring: 6 November 2025
Forfatter: TecnoDigital
  • IF ELSE er en betinget funktion i MySQL til at returnere værdier baseret på betingelser, nyttig i SELECT og udtryk.
  • Det kan kombineres med operatorer, aggregeringer, underforespørgsler, CASE-, IFNULL-, REGEXP-, DATE_FORMAT- og GROUP BY/HAVING-klausuler for avanceret logik.
  • Det giver dig mulighed for at klassificere data, håndtere null-værdier og generere dynamiske meddelelser pr. post, men overdreven indlejring kan påvirke læsbarhed og ydeevne.
hvis ellers mysql med eksempler

I denne artikel vil jeg vise dig, hvordan du bruger MySQL IF ELSE-sætningen med eksempler for at forbedre dine forespørgsler og få mere præcise resultater. Med disse 18 praktiske eksempler lærer vi, hvordan du bruger dette kraftfulde værktøj og får mest muligt ud af databasen. Vi vil udforske virkelige tilfælde, hvor brugen af ​​IF ELSE gør en forskel, fra betinget datavalg til at udføre komplekse operationer. Er du klar? Nå, lad os gå derhen! Gør dig klar til at mestre denne teknik og tag dine SQL-færdigheder til næste niveau.

Hvad er IF ELSE-sætning i MySQL?

Før vi dykker ned i eksemplerne, er det vigtigt at forstå, hvad IF ELSE-sætningen er i MySQL. Grundlæggende er det en betinget struktur, der giver os mulighed for at udføre forskellige handlinger afhængigt af, om en bestemt betingelse er opfyldt eller ej. Det vil sige, at hvis betingelsen er sand, vil en blok kode blive eksekveret, og hvis den er falsk, vil en anden kodeblok blive eksekveret.

MySQL IF ELSE-erklæring med eksempler

Her er en tabel med de 18 eksempler, vi vil se i denne artikel:

Ejemplo beskrivelse
1 Grundlæggende brug af IF ELSE
2 HVIS ANDET med flere betingelser
3 Indlejret HVIS ANDET
4 HVIS ANDET med logiske operatorer
5 IF ELSE med aggregeringsfunktioner
6 HVIS ANDET med underforespørgsler
7 HVIS ANDET med variabler
8 HVIS ANDET med CASE
9 HVIS ANDET med IFNULL
10 HVIS ANDET med NULLIF
11 HVIS ANDET FINNES
12 HVIS ANDET med IN
13 HVIS ANDET med MELLEM
14 HVIS ANDET med LIKE
15 HVIS ANDET med REGEXP
16 HVIS ANDET med DATE_FORMAT
17 HVIS ANDET med GROUP_CONCAT
18 HVIS ANDET med AT HAVE

1. Grundlæggende brug af IF ELSE

Lad os se på et simpelt eksempel til at starte med. Antag, at vi har en tabel kaldet "produkter" med følgende felter: id, navn, pris og lager. Vi ønsker at få navnet på produktet og en besked, der angiver, om det er på lager eller ej. Vi kan gøre det sådan her:

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

I dette tilfælde er betingelsen stock > 0. Hvis den er opfyldt, vil meddelelsen 'På lager' blive vist, og hvis den ikke er opfyldt, vil 'Ikke på lager' blive vist.

2. HVIS ANDET med flere betingelser

Vi kan også bruge IF ELSE med flere betingelser. Lad os f.eks. sige, at vi ønsker at få navnet på produktet og en meddelelse, der angiver, om prisen er større end 100, mindre end 50 eller mellem 50 og 100. Vi kan gøre dette på denne måde:

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

I dette tilfælde bruger vi indlejrede IF ELSE-sætninger til at evaluere de forskellige betingelser.

3. Indlejret HVIS ANDET

Som vi så i det foregående eksempel, kan vi indlejre flere IF ELSE-sætninger for at evaluere forskellige forhold. Lad os se på et andet eksempel. Antag, at vi ønsker at få produktnavnet og en meddelelse, der angiver, om beholdningen er større end 100, mindre end 10 eller mellem 10 og 100. Hvis beholdningen er mindre end 10, vil vi også angive, om den er 0 eller ej. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi tre niveauer af indlejring til at evaluere alle de nødvendige forhold.

4. HVIS ANDET med logiske operatorer

Vi kan også kombinere IF ELSE med logiske operatorer som AND og OR. Lad os f.eks. sige, at vi ønsker at få produktnavnet og en besked, der angiver, om prisen er større end 100, og lagerbeholdningen er mindre end 10. Vi kan gøre det sådan her:

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

I dette tilfælde er betingelsen precio > 100 AND stock < 10. Hvis begge betingelser er opfyldt, vil meddelelsen 'Haster påfyldning' blive vist, og hvis de ikke er opfyldt, vil 'OK' blive vist.

5. HVIS ANDET med aggregeringsfunktioner

Vi kan kombinere IF ELSE med aggregeringsfunktioner som SUM, AVG, MAX osv. Lad os for eksempel sige, at vi ønsker at få det samlede salg og en besked, der indikerer, om vi har overskredet målet på 10000 eller ej. Vi kan gøre det sådan her:

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

I dette tilfælde beregner vi det samlede salg med SUM og bruger derefter IF ELSE til at vise en besked baseret på om målet er overskredet eller ej.

  MySQL Docker: Glat migration fra traditionelle miljøer

6. HVIS ANDET med underforespørgsler

Vi kan også bruge IF ELSE med underforespørgsler . For eksempel, lad os antage, at vi ønsker at få navnene på produkterne og en besked, der angiver, om deres pris er højere end gennemsnitsprisen for alle produkter. Vi kan gøre det sådan her:

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;

I dette tilfælde bruger vi en underforespørgsel til at beregne gennemsnitsprisen for alle produkter og derefter sammenligne hver enkelt pris med den værdi ved hjælp af IF ELSE.

7. HVIS ANDET med variable

Vi kan bruge IF ELSE sammen med variabler til at gemme og bruge værdier i vores forespørgsler. Antag for eksempel, at vi ønsker at få det samlede salg og en besked, der indikerer, om vi har overskredet et mål, som vi har gemt i en variabel. Vi kan gøre det sådan her:

SET @objetivo = 10000;

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

I dette tilfælde definerer vi først en variabel @objetivo med værdien 10000, og så bruger vi den i IF ELSE-tilstanden.

8. HVIS ANDET med CASE

En anden måde at bruge IF ELSE på er ved at kombinere det med en CASE-sætning . For eksempel, antag at vi ønsker at få produktnavnet og en prisklassificering som 'Billig', 'Mellem' eller 'Dyr' baseret på bestemte intervaller. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi CASE til at evaluere forskellige forhold og tildele en værdi baseret på resultatet. Det er en alternativ måde at gøre det samme på som med indlejrede IF ELSE-sætninger.

9. HVIS ANDET med IFNULL

IFNULL-funktionen giver os mulighed for at håndtere nulværdier i vores forespørgsler. Vi kan kombinere det med IF ELSE for at tildele en standardværdi, når vi støder på en nulværdi. Antag for eksempel, at vi ønsker at få produktnavnet og dets pris, men hvis prisen er nul, vil vi vise meddelelsen 'Forespørgsel'. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi IFNULL til at evaluere, om prisen er null, og hvis det er tilfældet, skal du vise 'Query'-meddelelsen i stedet for null-værdien.

10. HVIS ANDET med NULLIF

NULLIF-funktionen ligner IFNULL, men i stedet for at håndtere nulværdier, giver den os mulighed for at sammenligne to værdier og returnere NULL, hvis de er ens. Vi kan kombinere det med IF ELSE for at tildele en alternativ værdi, når en bestemt betingelse er opfyldt. Antag for eksempel, at vi ønsker at få produktnavnet og dets pris, men hvis prisen er 0, vil vi vise meddelelsen 'Gratis'. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi NULLIF til at sammenligne prisen med 0 og returnere NULL, hvis de er ens. Vi bruger derefter IF ELSE til at evaluere, om resultatet af NULLIF er NULL, og hvis det er tilfældet, viser vi meddelelsen 'Gratis' i stedet for prisen.

11. HVIS ANDET FINDER

EXISTS-sætningen giver os mulighed for at kontrollere, om der er nogen post, der opfylder en bestemt betingelse i en underforespørgsel. Vi kan kombinere det med IF ELSE for at træffe beslutninger ud fra resultatet. Lad os f.eks. sige, at vi ønsker at få navnet på kunderne og en besked, der angiver, om de har afgivet en ordre eller ej. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi EXISTS med en underforespørgsel til at kontrollere, om der findes ordrer for hver kunde. Vi bruger derefter IF ELSE til at vise en besked baseret på resultatet.

12. HVIS ANDET med IN

IN-operatoren giver os mulighed for at kontrollere, om en værdi er på en liste over værdier. Vi kan kombinere det med IF ELSE for at træffe beslutninger ud fra resultatet. Lad os f.eks. sige, at vi ønsker at få navnet på produkter og en besked, der angiver, om de tilhører kategorien 'Elektronik' eller 'Hjem'. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi IN til at kontrollere, om produktkategorien er angivet under 'Elektronik' eller 'Hjem'. Vi bruger derefter IF ELSE til at vise en besked baseret på resultatet.

  Bedste databaseeksempler for udviklere og administratorer

13. HVIS ANDET med MELLEM

BETWEEN-operatoren giver os mulighed for at kontrollere, om en værdi er inden for et område af værdier. Vi kan kombinere det med IF ELSE for at træffe beslutninger ud fra resultatet. Lad os f.eks. sige, at vi ønsker at få navnet på produkterne og en besked, der angiver, om deres pris er mellem 50 og 100. Vi kan gøre det sådan:

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

I dette tilfælde bruger vi BETWEEN til at tjekke om prisen på produktet er mellem 50 og 100. Derefter bruger vi IF ELSE til at vise en besked baseret på resultatet.

14. HVIS ANDET med LIKE

LIKE-operatoren giver os mulighed for at søge efter mønstre i tekststrenge. Vi kan kombinere det med IF ELSE for at træffe beslutninger ud fra resultatet. Lad os f.eks. sige, at vi ønsker at få navnet på produkterne og en besked, der angiver, om deres navn indeholder ordet 'iPhone'. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi LIKE til at kontrollere, om produktnavnet indeholder ordet 'iPhone'. Vi bruger derefter IF ELSE til at vise en besked baseret på resultatet.

15. HVIS ANDET med REGEXP

REGEXP-operatoren giver os mulighed for at søge efter mere komplekse mønstre i tekststrenge ved hjælp af regulære udtryk . Vi kan kombinere den med IF ELSE for at træffe beslutninger baseret på resultatet. Antag for eksempel, at vi ønsker at få navnene på kunder og en besked, der angiver, om deres e-mailadresse er gyldig eller ej. Vi kan gøre det sådan her:

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;

I dette tilfælde bruger vi REGEXP med et regulært udtryk for at kontrollere, om kundens e-mail opfylder et gyldigt format. Vi bruger derefter IF ELSE til at vise en besked baseret på resultatet.

16. HVIS ANDET med DATE_FORMAT

Funktionen DATE_FORMAT giver os mulighed for at formatere datoer i vores forespørgsler. Vi kan kombinere det med IF ELSE for at træffe beslutninger ud fra resultatet. Lad os f.eks. sige, at vi ønsker at få navnet på ordrerne og en besked, der angiver, om de blev afgivet i en weekend eller ej. Vi kan gøre det sådan her:

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

I dette tilfælde bruger vi DATE_FORMAT til at få ugedagen for ordredatoen (0 for søndag, 6 for lørdag). Vi bruger derefter IF ELSE med IN til at tjekke om dagen er 0 eller 6 og vise en besked baseret på resultatet.

17. HVIS ANDET med GROUP_CONCAT

GROUP_CONCAT-funktionen giver os mulighed for at sammenkæde værdier fra flere rækker til en enkelt streng. Vi kan kombinere det med IF ELSE for at træffe beslutninger ud fra resultatet. Lad os f.eks. sige, at vi ønsker at få kundens navn og en besked, der angiver, om de har købt 'iPhone' eller 'Samsung'. Vi kan gøre det sådan her:

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;

I dette tilfælde bruger vi GROUP_CONCAT til at sammenkæde navnene på de produkter, der er købt af hver kunde. Vi bruger derefter IF ELSE med LIKE til at kontrollere, om den resulterende streng indeholder 'iPhone' eller 'Samsung' og viser en besked baseret på resultatet.

18. HVIS ANDET med AT HAVE

HAVING -klausulen giver os mulighed for at filtrere resultaterne af en GROUP BY-forespørgsel baseret på bestemte betingelser. Vi kan kombinere den med IF ELSE for at træffe beslutninger baseret på resultatet. Antag for eksempel, at vi ønsker at få antallet af ordrer pr. kunde og en besked, der angiver, om de er en "VIP-kunde" (mere end 10 ordrer) eller en "fast kunde". Vi kan gøre det sådan her:

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;

I dette tilfælde bruger vi GROUP BY til at gruppere ordrer efter kunde og tælle antallet af ordrer for hver med COUNT. Vi bruger derefter HAVING til kun at bortfiltrere kunder med mere end 5 ordrer. Endelig bruger vi IF ELSE til at vise en besked baseret på, om det samlede antal ordrer er større end 10 eller ej.

  Hvor i MySQL med eksempler: Master Conditional Queries

FAQ om IF ELSE MySQL med eksempler

1. Hvad er IF ELSE-sætning i MySQL?

IF ELSE-sætningen i MySQL er en betinget struktur , der giver os mulighed for at udføre forskellige handlinger afhængigt af, om en bestemt betingelse er opfyldt eller ej.

2. Hvordan bruger man IF ELSE-sætningen i MySQL?

Den grundlæggende syntaks for IF ELSE-sætningen i MySQL er som følger:

IF(condición, valor_si_verdadero, valor_si_falso)

3. Kan flere IF ELSE-sætninger indlejres i MySQL?

Ja, du kan indlejre flere IF ELSE-udsagn for at evaluere forskellige forhold og træffe beslutninger baseret på resultaterne.

4. Kan IF ELSE kombineres med andre MySQL funktioner og klausuler?

Ja, IF ELSE kan kombineres med mange andre MySQL-funktioner og -klausuler, såsom aggregerede funktioner, underforespørgsler, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT, HAVING og mere.

5. Hvad er forskellen mellem IF ELSE og CASE i MySQL?

Både IF ELSE og CASE giver os mulighed for at udføre forskellige handlinger baseret på visse betingelser. Den største forskel er, at IF ELSE bruges til at evaluere en enkelt betingelse og udføre en handling, hvis den er opfyldt eller ej, hvorimod CASE bruges til at evaluere flere betingelser og udføre forskellige handlinger baseret på resultatet.

6. Er der nogen begrænsninger i at bruge IF ELSE i MySQL?

Der er ingen væsentlige begrænsninger for at bruge IF ELSE i MySQL, ud over begrænsningerne for logikken og syntaksen for de betingelser, der evalueres. Det er dog vigtigt at bemærke, at overforbrug eller misbrug af IF ELSE kan påvirke forespørgselsydelsen og gøre koden sværere at læse og vedligeholde.

Konklusion af IF ELSE MySQL med eksempler

I denne artikel har vi lært, hvad IF ELSE-sætningen er i MySQL, og hvordan den bruges til at udføre forskellige handlinger baseret på bestemte betingelser. Vi har set 18 praktiske eksempler på brugen af ​​IF ELSE, kombineret med andre MySQL-funktioner og -klausuler såsom aggregationsfunktioner, underforespørgsler, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT og HAVING.

Jeg håber, at disse eksempler har været nyttige, og at de hjælper dig med bedre at forstå, hvordan du bruger IF ELSE i dine MySQL- forespørgsler . Og glem ikke at dele denne artikel med dine venner og kolleger, hvis du fandt den interessant!