Instrukcja MySQL IF ELSE z praktycznymi przykładami

Ostatnia aktualizacja: 6 listopada 2025
  • IF ELSE to funkcja warunkowa w MySQL, która zwraca wartości na podstawie warunków, przydatna w instrukcji SELECT i wyrażeniach.
  • Można go łączyć z operatorami, agregacjami, podzapytaniami, klauzulami CASE, IFNULL, REGEXP, DATE_FORMAT i GROUP BY/HAVING w celu uzyskania zaawansowanej logiki.
  • Umożliwia klasyfikowanie danych, obsługę wartości null i generowanie dynamicznych komunikatów dla każdego rekordu, jednak nadmierne zagnieżdżanie może mieć wpływ na czytelność i wydajność.
if else mysql z przykładami

W tym artykule pokażę Ci, jak używać polecenia MySQL IF ELSE oraz przykładów, aby udoskonalić swoje zapytania i uzyskać dokładniejsze wyniki. Dzięki tym 18 praktycznym przykładom nauczymy się, jak korzystać z tego potężnego narzędzia i jak najlepiej wykorzystać bazę danych. Przeanalizujemy przypadki z życia wzięte, w których użycie instrukcji IF ELSE okazuje się skuteczne, od warunkowego wyboru danych po wykonywanie złożonych operacji. Jesteś gotowy? No to jedziemy tam! Przygotuj się na opanowanie tej techniki i przenieś swoje umiejętności SQL na wyższy poziom.

Czym jest instrukcja IF ELSE w MySQL?

Zanim przejdziemy do przykładów, istotne jest zrozumienie, czym jest polecenie IF ELSE w MySQL. Zasadniczo jest to struktura warunkowa umożliwiająca wykonywanie różnych działań w zależności od tego, czy spełniony jest określony warunek, czy nie. Oznacza to, że jeśli warunek jest spełniony, zostanie wykonany jeden blok kodu, a jeśli jest spełniony, zostanie wykonany inny blok kodu.

Instrukcja MySQL IF ELSE z przykładami

Poniżej znajduje się tabela zawierająca listę 18 przykładów, które omówimy w tym artykule:

Przykład opis
1 Podstawowe użycie IF ELSE
2 JEŚLI INACZEJ z wieloma warunkami
3 Zagnieżdżone IF ELSE
4 JEŚLI INACZEJ z operatorami logicznymi
5 JEŚLI INACZEJ z funkcjami agregacji
6 IF ELSE z podzapytaniami
7 JEŚLI INACZEJ ze zmiennymi
8 JEŚLI INACZEJ z CASE
9 JEŚLI INACZEJ z IFNULL
10 JEŚLI INACZEJ z NULLIF
11 JEŚLI INACZEJ z ISTNIEJE
12 JEŚLI INACZEJ z IN
13 JEŚLI INACZEJ z POMIĘDZY
14 JEŚLI INACZEJ z LIKE
15 JEŚLI INACZEJ z REGEXP
16 JEŚLI INACZEJ z DATE_FORMAT
17 JEŚLI INACZEJ z GROUP_CONCAT
18 JEŚLI INACZEJ z MAJĄC

1. Podstawowe użycie IF ELSE

Przyjrzyjmy się na początek prostemu przykładowi. Załóżmy, że mamy tabelę o nazwie „produkty” zawierającą następujące pola: id, nazwa, cena i stan magazynowy. Chcemy uzyskać nazwę produktu i komunikat informujący, czy jest on dostępny w magazynie, czy nie. Możemy to zrobić w ten sposób:

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

W tym przypadku warunek jest taki stock > 0. Jeżeli warunek jest spełniony, wyświetlony zostanie komunikat „W magazynie”, a jeżeli nie jest spełniony, wyświetlony zostanie komunikat „Brak w magazynie”.

2. JEŚLI INACZEJ z wieloma warunkami

Możemy również użyć IF ELSE z wieloma warunkami. Na przykład, powiedzmy, że chcemy uzyskać nazwę produktu i komunikat wskazujący, czy cena jest większa niż 100, mniejsza niż 50 lub pomiędzy 50 i 100. Możemy to zrobić w ten sposób:

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

W tym przypadku wykorzystujemy zagnieżdżone instrukcje IF ELSE do oceny różnych warunków.

3. Zagnieżdżone IF ELSE

Jak widzieliśmy w poprzednim przykładzie, możemy zagnieżdżać wiele instrukcji IF ELSE w celu oceny różnych warunków. Przyjrzyjmy się innemu przykładowi. Załóżmy, że chcemy uzyskać nazwę produktu i komunikat wskazujący, czy stan magazynowy jest większy niż 100, mniejszy niż 10 czy między 10 a 100. Ponadto, jeśli stan magazynowy jest mniejszy niż 10, chcemy wskazać, czy wynosi 0, czy nie. Możemy to zrobić w ten sposób:

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

W tym przypadku wykorzystujemy trzy poziomy zagnieżdżenia w celu oceny wszystkich niezbędnych warunków.

4. JEŚLI INACZEJ z operatorami logicznymi

Możemy również łączyć IF ELSE z operatorami logicznymi takimi jak AND i OR. Na przykład, powiedzmy, że chcemy uzyskać nazwę produktu i komunikat informujący, czy cena jest większa niż 100, a stan magazynowy jest mniejszy niż 10. Możemy to zrobić w ten sposób:

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

W tym przypadku warunek jest taki precio > 100 AND stock < 10. Jeśli oba warunki są spełnione, wyświetlony zostanie komunikat „Pilne uzupełnienie”, a jeśli nie są spełnione, wyświetlony zostanie komunikat „OK”.

5. JEŚLI INACZEJ z funkcjami agregującymi

Funkcję IF ELSE można łączyć z funkcjami agregującymi, takimi jak SUM, AVG, MAX itp. Załóżmy na przykład, że chcemy uzyskać łączną sprzedaż i komunikat informujący, czy przekroczyliśmy cel 10000 XNUMX, czy nie. Możemy to zrobić w ten sposób:

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

W tym przypadku obliczamy całkowitą sprzedaż za pomocą funkcji SUMA, a następnie używamy funkcji JEŚLI INACZEJ, aby wyświetlić komunikat na podstawie tego, czy cel został przekroczony, czy nie.

  MySQL Docker: Płynna migracja ze środowisk tradycyjnych

6. IF ELSE z podzapytaniami

Możemy również użyć IF ELSE z podzapytaniami . Na przykład, załóżmy, że chcemy uzyskać nazwy produktów i komunikat informujący, czy ich cena jest wyższa niż średnia cena wszystkich produktów. Możemy to zrobić w ten sposób:

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;

W tym przypadku używamy podzapytania w celu obliczenia średniej ceny wszystkich produktów, a następnie porównujemy każdą indywidualną cenę z tą wartością, korzystając z instrukcji IF ELSE.

7. JEŚLI INACZEJ ze zmiennymi

Możemy używać IF ELSE razem ze zmiennymi w celu przechowywania i używania wartości w naszych zapytaniach. Załóżmy na przykład, że chcemy uzyskać całkowitą sprzedaż i komunikat informujący, czy przekroczyliśmy cel zapisany w zmiennej. Możemy to zrobić w ten sposób:

SET @objetivo = 10000;

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

W tym przypadku najpierw zdefiniujemy zmienną @objetivo o wartości 10000 i używamy jej w warunku IF ELSE.

8. JEŚLI INACZEJ z CASE

Innym sposobem użycia instrukcji IF ELSE jest połączenie jej z instrukcją CASE . Załóżmy na przykład, że chcemy uzyskać nazwę produktu i klasyfikację cenową „Tani”, „Średni” lub „Drogi” na podstawie określonych przedziałów cenowych. Możemy to zrobić w następujący sposób:

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

W tym przypadku stosujemy metodę CASE do oceny różnych warunków i przypisujemy wartość na podstawie wyniku. Jest to alternatywny sposób wykonywania tego samego działania, co w przypadku zagnieżdżonych instrukcji IF ELSE.

9. JEŚLI INACZEJ z IFNULL

Funkcja IFNULL pozwala nam obsługiwać wartości null w naszych zapytaniach. Możemy połączyć tę opcję z IF ELSE, aby przypisać wartość domyślną, gdy napotkamy wartość null. Na przykład, załóżmy, że chcemy uzyskać nazwę produktu i jego cenę, ale jeśli cena jest zerowa, chcemy wyświetlić komunikat „Zapytanie”. Możemy to zrobić w ten sposób:

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

W tym przypadku używamy IFNULL, aby ocenić, czy cena jest równa null i jeśli tak, wyświetlamy komunikat „Zapytanie” zamiast wartości null.

10. JEŚLI INACZEJ z NULLIF

Funkcja NULLIF jest podobna do IFNULL, ale zamiast obsługiwać wartości null, pozwala nam porównać dwie wartości i zwrócić NULL, jeśli są równe. Można ją połączyć z IF ELSE, aby przypisać alternatywną wartość, gdy spełniony jest określony warunek. Na przykład, załóżmy, że chcemy uzyskać nazwę produktu i jego cenę, ale jeśli cena wynosi 0, chcemy wyświetlić komunikat „Za darmo”. Możemy to zrobić w ten sposób:

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

W tym przypadku używamy NULLIF, aby porównać cenę z 0 i zwrócić NULL, jeśli są takie same. Następnie używamy IF ELSE, aby ocenić, czy wynik NULLIF jest równy NULL i jeśli tak, wyświetlamy komunikat „Za darmo” zamiast ceny.

11. JEŚLI INACZEJ z ISTNIEJE

Klauzula EXISTS pozwala sprawdzić, czy istnieje rekord spełniający określony warunek w podzapytaniu. Możemy połączyć tę opcję z instrukcją IF ELSE, aby podejmować decyzje na podstawie wyniku. Załóżmy na przykład, że chcemy uzyskać imiona klientów i komunikat informujący, czy złożyli zamówienie, czy nie. Możemy to zrobić w ten sposób:

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

W tym przypadku używamy EXISTS z podzapytaniem, aby sprawdzić, czy istnieją jakieś zamówienia dla każdego klienta. Następnie używamy IF ELSE, aby wyświetlić komunikat na podstawie wyniku.

12. JEŚLI INACZEJ z IN

Operator IN pozwala sprawdzić, czy wartość znajduje się na liście wartości. Możemy połączyć tę opcję z instrukcją IF ELSE, aby podejmować decyzje na podstawie wyniku. Załóżmy na przykład, że chcemy uzyskać nazwy produktów i komunikat informujący, czy należą one do kategorii „Elektronika” czy „Dom”. Możemy to zrobić w ten sposób:

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

W tym przypadku używamy IN, aby sprawdzić, czy kategoria produktu znajduje się w kategorii „Elektronika” lub „Dom”. Następnie używamy IF ELSE, aby wyświetlić komunikat na podstawie wyniku.

  Najlepsze przykłady baz danych dla programistów i administratorów

13. JEŚLI INACZEJ z MIĘDZY

Operator BETWEEN pozwala sprawdzić, czy wartość mieści się w zakresie wartości. Możemy połączyć tę opcję z instrukcją IF ELSE, aby podejmować decyzje na podstawie wyniku. Na przykład, powiedzmy, że chcemy uzyskać nazwę produktu i komunikat wskazujący, czy ich cena mieści się w przedziale od 50 do 100. Możemy to zrobić w ten sposób:

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

W tym przypadku używamy BETWEEN, aby sprawdzić, czy cena produktu mieści się w przedziale od 50 do 100. Następnie używamy IF ELSE, aby wyświetlić komunikat na podstawie wyniku.

14. JEŚLI INACZEJ z LIKE

Operator LIKE umożliwia wyszukiwanie wzorców w ciągach tekstowych. Możemy połączyć tę opcję z instrukcją IF ELSE, aby podejmować decyzje na podstawie wyniku. Załóżmy na przykład, że chcemy uzyskać nazwy produktów i komunikat informujący, czy ich nazwa zawiera słowo „iPhone”. Możemy to zrobić w ten sposób:

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

W tym przypadku używamy polecenia LIKE, aby sprawdzić, czy nazwa produktu zawiera słowo „iPhone”. Następnie używamy IF ELSE, aby wyświetlić komunikat na podstawie wyniku.

15. JEŚLI INACZEJ z REGEXP

Operator REGEXP pozwala nam wyszukiwać bardziej złożone wzorce w ciągach tekstowych za pomocą wyrażeń regularnych . Możemy go połączyć z operatorem IF ELSE, aby podejmować decyzje na podstawie wyniku. Załóżmy na przykład, że chcemy uzyskać imiona i nazwiska klientów oraz komunikat informujący, czy ich adres e-mail jest prawidłowy, czy nie. Możemy to zrobić w następujący sposób:

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;

W tym przypadku używamy REGEXP z wyrażeniem regularnym, aby sprawdzić, czy adres e-mail klienta jest zgodny z prawidłowym formatem. Następnie używamy IF ELSE, aby wyświetlić komunikat na podstawie wyniku.

16. JEŚLI INACZEJ z DATE_FORMAT

Funkcja DATE_FORMAT umożliwia formatowanie dat w zapytaniach. Możemy połączyć tę opcję z instrukcją IF ELSE, aby podejmować decyzje na podstawie wyniku. Załóżmy na przykład, że chcemy uzyskać nazwę zamówienia i komunikat informujący, czy zostało złożone w weekend, czy nie. Możemy to zrobić w ten sposób:

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

W tym przypadku używamy DATE_FORMAT, aby uzyskać dzień tygodnia, w którym złożono zamówienie (0 dla niedzieli, 6 dla soboty). Następnie używamy IF ELSE z IN, aby sprawdzić, czy dzień jest 0 czy 6 i wyświetlić komunikat na podstawie wyniku.

17. JEŚLI INACZEJ z GROUP_CONCAT

Funkcja GROUP_CONCAT umożliwia łączenie wartości z wielu wierszy w jeden ciąg. Możemy połączyć tę opcję z instrukcją IF ELSE, aby podejmować decyzje na podstawie wyniku. Załóżmy na przykład, że chcemy uzyskać imię klienta i wiadomość informującą, czy kupił „iPhone'a” czy „Samsunga”. Możemy to zrobić w ten sposób:

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;

W tym przypadku używamy GROUP_CONCAT w celu połączenia nazw produktów zakupionych przez poszczególnych klientów. Następnie używamy IF ELSE z LIKE, aby sprawdzić, czy powstały ciąg zawiera „iPhone” lub „Samsung” i wyświetlić komunikat na podstawie wyniku.

18. JEŚLI INACZEJ z MAJĄC

Klauzula HAVING pozwala nam filtrować wyniki zapytania GROUP BY na podstawie określonych warunków. Możemy połączyć ją z klauzulą ​​IF ELSE, aby podejmować decyzje na podstawie wyniku. Załóżmy na przykład, że chcemy uzyskać liczbę zamówień na klienta i komunikat informujący, czy jest on „Klientem VIP” (ponad 10 zamówień), czy „Stałym Klientem”. Możemy to zrobić w następujący sposób:

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;

W tym przypadku używamy polecenia GROUP BY, aby pogrupować zamówienia według klienta i policzyć liczbę zamówień dla każdego z nich za pomocą polecenia COUNT. Następnie używamy polecenia HAVING, aby odfiltrować tylko klientów, którzy złożyli więcej niż 5 zamówień. Na koniec używamy polecenia IF ELSE, aby wyświetlić komunikat na podstawie tego, czy łączna liczba zamówień jest większa niż 10, czy nie.

  Gdzie w MySQL z przykładami: główne zapytania warunkowe

FAQ na temat IF ELSE MySQL z przykładami

1. Czym jest instrukcja IF ELSE w MySQL?

Instrukcja IF ELSE w MySQL to struktura warunkowa umożliwiająca wykonywanie różnych akcji w zależności od tego, czy spełniony jest określony warunek.

2. Jak używać instrukcji IF ELSE w MySQL?

Podstawowa składnia instrukcji IF ELSE w MySQL jest następująca:

IF(condición, valor_si_verdadero, valor_si_falso)

3. Czy w MySQL można zagnieżdżać wiele instrukcji IF ELSE?

Tak, możesz zagnieżdżać wiele instrukcji IF ELSE, aby oceniać różne warunki i podejmować decyzje na podstawie wyników.

4. Czy funkcję IF ELSE można łączyć z innymi funkcjami i klauzulami MySQL?

Tak, funkcję IF ELSE można łączyć z wieloma innymi funkcjami i klauzulami MySQL, takimi jak funkcje agregujące, podzapytania, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT, HAVING i wiele innych.

5. Jaka jest różnica między IF ELSE i CASE w MySQL?

Zarówno IF ELSE jak i CASE pozwalają nam wykonywać różne akcje na podstawie określonych warunków. Główną różnicą jest to, że IF ELSE służy do oceny pojedynczego warunku i wykonania działania, niezależnie od tego, czy jest on spełniony, czy nie, natomiast CASE służy do oceny wielu warunków i wykonania różnych działań na podstawie wyniku.

6. Czy istnieją jakieś ograniczenia w stosowaniu IF ELSE w MySQL?

Nie ma istotnych ograniczeń w stosowaniu instrukcji IF ELSE w bazie danych MySQL, poza ograniczeniami wynikającymi z logiki i składni ocenianych warunków. Należy jednak pamiętać, że nadużywanie lub niewłaściwe używanie instrukcji IF ELSE może mieć wpływ na wydajność zapytania oraz utrudniać czytanie i konserwację kodu.

Podsumowanie IF ELSE MySQL z przykładami

W tym artykule dowiedzieliśmy się, czym jest instrukcja IF ELSE w MySQL i jak służy do wykonywania różnych akcji w oparciu o określone warunki. Przedstawiliśmy 18 praktycznych przykładów użycia instrukcji IF ELSE w połączeniu z innymi funkcjami i klauzulami MySQL, takimi jak funkcje agregujące, podzapytania, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT i HAVING.

Mam nadzieję, że te przykłady były pomocne i pomogą Ci lepiej zrozumieć, jak używać instrukcji IF ELSE w zapytaniach MySQL . I nie zapomnij podzielić się tym artykułem ze znajomymi i współpracownikami, jeśli uznasz go za interesujący!