Precedencia y uso de paréntesis en AND/OR
Conozca el error de filtrado más común que los entrevistadores introducen en sus preguntas
Precedencia y uso de paréntesis en AND/OR es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.
La trampa que plantean los entrevistadores
El error de filtrado más común en las entrevistas parece correcto a primera vista. Se le pide: busque los pedidos del cliente 5 que estén pendientes o enviados. Un candidato escribe un WHERE con AND y OR mezclados y obtiene filas adicionales.
¿Por qué? Porque AND tiene mayor precedencia que OR. La base de datos evalúa primero todos los pares de AND y después los OR. Esta lección hará que esa regla le resulte automática, para que nunca pierda puntos por este motivo.
La precedencia de operadores en una sola frase
En todos los dialectos de SQL, los operadores lógicos se evalúan en este orden: primero NOT, después AND y por último OR.
NOTtiene la mayor precedenciaANDtiene una precedencia intermediaORtiene la menor precedencia
Por tanto, A OR B AND C se interpreta como A OR (B AND C), nunca como (A OR B) AND C. El entrevistador cuenta con que lo olvide.
La consulta con errores
Esta es la consulta que escribe un candidato para cliente 5, estado pendiente o enviado. Parece correcta, pero es errónea.
Como AND tiene mayor precedencia, SQL la interpreta como (customer_id = 5 AND status = 'pending') OR status = 'shipped'. La segunda rama no tiene ningún filtro de cliente, por lo que devuelve pedidos enviados de todos los clientes.
SELECT *
FROM orders
WHERE customer_id = 5
AND status = 'pending'
OR status = 'shipped';La solución: los paréntesis
Encierre la rama OR entre paréntesis para que el filtro de cliente se aplique a ambos estados. Los paréntesis anulan la precedencia y hacen explícita la intención.
Ahora SQL evalúa primero el OR agrupado y después aplica customer_id = 5 al grupo completo. Los revisores sénior añaden paréntesis incluso cuando la precedencia ya produce el resultado correcto, simplemente para mejorar la legibilidad.
SELECT *
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');Recorrido de la tabla de verdad
Tome un pedido enviado del cliente 9. Siga la versión con errores:
customer_id = 5es falsestatus = 'pending'es falsefalse AND falsees falsefalse OR (status = 'shipped' is true)es true
La fila se devuelve aunque no pertenezca al cliente 5. Explicar en voz alta el recorrido de una fila concreta es exactamente lo que los entrevistadores quieren ver.
NOT tiene la mayor precedencia
NOT solo se aplica a la condición que aparece inmediatamente después. Por tanto, NOT status = 'open' AND priority = 'high' significa (NOT status = 'open') AND priority = 'high'.
Si quería negar toda la expresión, debe usar paréntesis: NOT (status = 'open' AND priority = 'high'). Según la ley de De Morgan, eso equivale a status <> 'open' OR priority <> 'high'.
SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');Un ejemplo con tres condiciones
Busque productos que sean (electrónica o electrodomésticos) y que estén disponibles. Sin paréntesis, el filtro de disponibilidad solo se aplicaría a los electrodomésticos.
La consulta agrupada se lee con claridad: seleccione una de dos categorías y, después, exija que haya existencias. Regla mental: siempre que una consulta combine AND con OR, casi siempre necesitará paréntesis alrededor del grupo OR.
SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
AND in_stock = true;IN como alternativa más clara
Una cadena larga de OR sobre la misma columna es propensa a errores y demasiado verbosa. Sustitúyala por IN, que no deja lugar a ambigüedades y no necesita paréntesis.
La consulta siguiente es exactamente equivalente a la anterior, pero es más difícil de romper. A los entrevistadores les gusta ver esta refactorización porque demuestra que comprende tanto la corrección como la legibilidad.
SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
AND in_stock = true;Precedencia en filtros calculados
La precedencia también se aplica cuando se combinan aritmética y lógica. En price * 1.2 > 100 OR discount = 0 AND active = true, la comparación y la aritmética se resuelven primero, después AND y, por último, OR.
Por tanto, se interpreta como (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). Cuando tenga dudas, no memorice la tabla bajo presión; simplemente ponga paréntesis a cada grupo.
Cómo responder en directo
Cuando un entrevistador le muestre un filtro combinado de AND/OR y le pregunte qué devuelve esto, haga tres cosas:
- Indique la regla de precedencia:
ANDantes queOR - Vuelva a poner paréntesis en la consulta en voz alta para revelar su agrupación real
- Siga el recorrido de una fila que ponga al descubierto el error
Después, ofrezca la versión corregida y con paréntesis. Esta secuencia transmite un rigor propio de un perfil senior.
Hábito preventivo
El hábito profesional es: ponga siempre paréntesis alrededor de cada grupo OR. Cuesta dos caracteres y elimina toda una clase de errores y comentarios de revisión.
Los revisores de código nunca deberían tener que evaluar mentalmente la precedencia para confirmar que un filtro es correcto. Haga visible la agrupación. Este es uno de los pocos casos en los que todo el mundo considera que la sintaxis redundante es un buen estilo.
SELECT order_id, status
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');Comprobación rápida
Razone sobre la regla de precedencia antes de responder.
Resumen
Ideas clave:
- La precedencia lógica es NOT, después AND y después OR
- Los filtros combinados de
AND/ORcasi siempre necesitan paréntesis alrededor del grupoOR - Un paréntesis que falta amplía los resultados silenciosamente y, a menudo, elimina por completo un filtro
- Sustituya las cadenas largas de
ORsobre una columna porIN - Para responder en directo: indique la regla, vuelva a poner los paréntesis, siga el recorrido de una fila y, después, corrija el filtro
Ponga siempre paréntesis en los grupos OR, incluso cuando la precedencia ya produzca el resultado correcto.
Preguntas frecuentes
¿La lección «Precedencia y uso de paréntesis en AND/OR» es gratis?
Sí — el texto completo de «Precedencia y uso de paréntesis en AND/OR» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Precedencia y uso de paréntesis en AND/OR»?
Conozca el error de filtrado más común que los entrevistadores introducen en sus preguntas Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Coding Interview Prep?
No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Precedencia y uso de paréntesis en AND/OR»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?
Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Precedencia y uso de paréntesis en AND/OR
- BETWEEN, IN y límites inclusivos
- LIKE, comodines y escape
- Filtrar por valores calculados