Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Condiciones complejas de filtrado Fundamentos de SQL

A veces necesitamos filtrar filas según varias condiciones a la vez. Por ejemplo, queremos ver todos los cursos que fueron creados antes del 14 de junio de 2022 y que además contienen la palabra dolor en su descripción.

Podríamos hacer dos consultas y comparar los resultados, pero sería incómodo y propenso a errores 😅.

En SQL hay una forma mucho más simple: usar los operadores lógicos AND y OR.

Tablas de verdad

Antes de ver ejemplos, entendamos cómo funcionan.

Operador OR

Significa “O”. La condición será verdadera si al menos una de las partes se cumple.
A B A OR B
Verdadero Verdadero ✅ Verdadero
Verdadero Falso ✅ Verdadero
Falso Verdadero ✅ Verdadero
Falso Falso ❌ Falso

Operador AND

Significa “Y”. Solo será verdadera si ambas condiciones se cumplen.
A B A AND B
Verdadero Verdadero ✅ Verdadero
Verdadero Falso ❌ Falso
Falso Verdadero ❌ Falso
Falso Falso ❌ Falso

Cómo combinar condiciones

Supongamos que queremos todos los cursos creados antes del 14/06/2022 y cuya descripción contiene la palabra dolor.

SELECT *
FROM cursos
WHERE description LIKE '%dolor%'
  AND created_at < '2022-06-14';

🔵 Abrir en DB Fiddle

💡 Usa una línea por parte de la consulta (SELECT, FROM, WHERE) — así se lee mejor.

Ejemplo con OR

Ahora queremos mostrar a los usuarios con id > 90, o aquellos cuyo id no está definido (nulo).

SELECT *
FROM usuarios
WHERE id > 90 OR id IS NULL;

🔵 Abrir en DB Fiddle

👉 Si hubiéramos usado AND, la consulta no devolvería nada, porque un id no puede ser a la vez NULL y mayor que 90.

Combinar AND y OR

Podemos mezclar ambos operadores, pero hay que recordar su prioridad:

AND tiene más prioridad que OR, por lo tanto, se evalúa primero.

Para evitar confusiones, usa paréntesis:

SELECT *
FROM usuarios
WHERE nombre_primero = 'Andy'
    OR (created_at > '2022-06-13' AND created_at < '2022-06-14');

🔵 Abrir en DB Fiddle

💬 Esto seleccionará a los usuarios llamados Andy o a los que se registraron entre el 13 y 14 de junio de 2022.


Resumen

  • AND exige que se cumplan todas las condiciones.
  • OR basta con que se cumpla una.
  • AND tiene prioridad sobre OR.
  • Usa paréntesis ( ) para controlar el orden cuando hay varias condiciones.

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY