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
| A | B | A OR B |
|---|---|---|
| Verdadero | Verdadero | ✅ Verdadero |
| Verdadero | Falso | ✅ Verdadero |
| Falso | Verdadero | ✅ Verdadero |
| Falso | Falso | ❌ Falso |
Operador AND
| 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
ANDexige que se cumplan todas las condiciones.ORbasta con que se cumpla una.ANDtiene prioridad sobreOR.- 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.