Categorías: MySQL

Agregar condiciones

Habrá ocasiones en las que al filtrar registros necesitemos que cumplan con más de una condición. Para estas ocasiones podemos utilizar AND / OR.

AND
AND se utiliza cuando se quiere que ambas condiciones se cumplan.
Si un registro únicamente cumple alguna de las dos condiciones no es tomado en cuenta.

-- Referencia del uso de AND
-- SELECT * FROM tabla WHERE condicion1 AND condicion2;
-- cada condición está dada por una columna un operador y un valor

-- Seleccionar todos los datos
-- de la tabla usuarios
-- donde el valor en la columna email 
-- contenga el término reichel
-- y que el valor en la columna rol_id 
-- no sea NULL

SELECT * FROM usuarios
WHERE email LIKE "%reichel%" 
AND rol_id IS NOT NULL;

OR
OR se utiliza cuando se quiere que cualquiera de las condiciones utilizadas se cumpla.
Los registros que cumplan con alguna de las dos condiciones – o con las dos condiciones – son tomados en cuenta.

-- Referencia del uso de OR
-- SELECT * FROM tabla WHERE condicion1 OR condicion2;
-- cada condición está dada por una columna un operador y un valor

-- Seleccionar todos los datos
-- de la tabla usuarios
-- donde el valor en la columna email 
-- contenga el término reichel
-- o que el valor en la columna rol_id 
-- no sea NULL.
--
-- En este caso prefiero plantearla 
-- como dos consultas independientes.
--
-- Seleccionar todos los datos
-- de la tabla usuarios
-- donde el valor en la columna email 
-- contenga el término reichel
-- o 
-- Seleccionar todos los datos
-- de la tabla usuarios
-- donde  el valor en la columna rol_id 
-- no sea NULL.

SELECT * 
FROM usuarios
WHERE email LIKE "%reichel%" 
OR rol_id IS NOT NULL;

Paréntesis – ()

En caso de requerir más de dos condiciones o que el comportamiento sea distinto podemos utilizar paréntesis para agrupar diferentes expresiones.

Hay que prestar atención en las condiciones que agrupa cada uno de los paréntesis porque si influye en la manera en que se filtran los registros.

-- Selecciona todos los datos 
-- de la tabla usuarios
-- donde la columna email contenga el término
-- co.uk o selecciona todos los datos 
-- de la tabla usuarios donde
-- el valor en la columna rol_id no sea NULL.
-- De los registros obtenidos únicamente 
-- queremos seleccionar los registros que 
-- el valor del mes en la columna creado es marzo - 03 -.

SELECT * 
FROM usuarios
WHERE (email LIKE "%.co.uk%" OR rol_id IS NOT NULL)
AND MONTH(creado) = 03;

-- Selecciona todos los datos 
-- de la tabla usuarios
-- donde la columna email contenga el término
-- co.uk o selecciona todos los datos
--  de la tabla usuarios 
-- donde el valor en la columna rol_id no sea NULL 
-- y  que además tengan el valor del mes 
-- en la columna creado es marzo - 03 -.

SELECT * 
FROM usuarios
WHERE email LIKE "%.co.uk%" OR (rol_id IS NOT NULL
AND MONTH(creado) = 03);

Nota:
Al utilizar AND / OR podemos ordenar los resultados de la consulta, limitar / desplazar el número de resultados – en caso de paginar – y utilizar los diferentes operadores que hemos visto hasta ahora.

-- Selecciona todos los datos 
-- de la tabla usuarios
-- donde la columna email contenga el término
-- co.uk o selecciona todos los datos 
-- de la tabla usuarios donde
-- el valor en la columna rol_id no sea NULL.
-- De los registros obtenidos únicamente 
-- queremos seleccionar los registros que 
-- el valor del mes en la columna creado es marzo - 03 -.
-- De los registros obtenidos
-- los vamos a ordenar por 
-- la columna email de manera
-- ascendente y 
-- queremos visualizar 
-- únicamente los cinco primeros.

SELECT * 
FROM usuarios
WHERE email LIKE "%.co.uk%" OR (rol_id IS NOT NULL
AND MONTH(creado) = 03)
ORDER BY email ASC
LIMIT 5;

eamexicano

Publicado por
eamexicano

Entradas recientes

Handbrake CLI

Ya que vimos como crear nuestros propios ajustes la siguiente tarea sería poder codificar nuestro(s)…

2 semanas hace

Crear ajustes personalizados en HandBrake

A veces, al codificar videos con HandBrake, utilizamos ajustes personalizados, los cuales, tenemos que volver…

2 semanas hace

Manipular registros de tabla con referencia a sí misma

En ocasiones cuando queremos manipular - borrar o editar - los registros de una tabla…

5 años hace

Organización de Proyectos

Si ya has hecho sitios o aplicaciones web es probable que tengas una manera de…

5 años hace

LAMP – Funcionamiento

En la publicación de LAMP Stack vimos los componentes de esta plataforma y las tareas…

5 años hace

Inyección SQL

Una inyección de SQL es una vulnerabilidad de las aplicaciones web en la cual el…

5 años hace

Esta web usa cookies.