Filtros · condiciones por fila

WHERE

WHERE conserva las filas cuya condición se evalúa como verdadera y descarta las falsas o desconocidas.

Lectura: 6–8 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué decide WHERE

WHERE evalúa una condición para cada fila disponible. Solo pasan las filas cuyo resultado es verdadero. Las condiciones falsas y las que producen un valor desconocido —por ejemplo, ciertas comparaciones con NULL— quedan fuera.

El filtro ocurre antes de agrupar. Por eso WHERE trabaja con filas individuales, mientras que HAVING puede filtrar grupos ya calculados.

Sintaxis básica

Estructura
SELECT columnas
FROM tabla
WHERE condicion;

Una condición puede utilizar comparaciones, rangos, listas, patrones, comprobaciones de nulos y combinaciones con AND, OR y NOT.

Ejemplo guiado: clientes activos de Madrid

SQL
SELECT nombre,
       ciudad
FROM clientes
WHERE activo = 1
  AND ciudad = 'Madrid'
ORDER BY id;
Resultado comprobado
nombreciudad
Ana TorresMadrid
Marta RuizMadrid
Noa VidalMadrid

Cada fila debe cumplir las dos condiciones porque están unidas con AND. Una persona activa de otra ciudad no pasa; una persona de Madrid inactiva tampoco.

Agrupa la lógica con paréntesis

Condición explícita
WHERE activo = 1
  AND (ciudad = 'Madrid' OR ciudad = 'Bilbao')

AND y OR tienen precedencias distintas. Los paréntesis hacen visible la intención y reducen errores al ampliar el filtro.

NULL necesita operadores propios

Clientes sin correo
SELECT nombre
FROM clientes
WHERE email IS NULL
ORDER BY id;

El resultado contiene a Diego López, Pablo Sanz y Mario Gil. No uses email = NULL: esa comparación no produce verdadero. Utiliza IS NULL o IS NOT NULL.

Antes de un UPDATE o DELETE, prueba el mismo WHERE con SELECT. Comprueba las filas afectadas y solo después ejecuta la modificación dentro de una transacción cuando el motor y el entorno lo permitan.

Error frecuente: filtrar un alias calculado

No portable
SELECT precio * stock AS valor_stock
FROM productos
WHERE valor_stock > 500;

En SQL portable, WHERE no puede usar ese alias de salida. Repite la expresión o calcula el alias en una consulta interior.

Práctica: productos disponibles de precio medio

Básica · dos condiciones

Filtra inventario útil

Devuelve nombre, precio y stock de los productos con existencias y precio entre 50 y 200, incluidos ambos límites. Ordena por precio e id.

Compatibilidad entre motores

Las comparaciones y conectores básicos son comunes. Las diferencias aparecen en tipos booleanos, sensibilidad a mayúsculas, funciones, conversiones implícitas y operadores específicos. Para valores ausentes, IS NULL es la forma portable.

Qué debes recordar

  • WHERE conserva condiciones verdaderas.
  • Usa paréntesis cuando combines AND y OR.
  • Comprueba NULL con IS NULL.
  • Valida el filtro con SELECT antes de modificar datos.

Conceptos relacionados

Fuentes técnicas consultadas