Utilización de IN en predicado Where
Utilizar IN puede facilitar la creación de selecciones complejas en sentencias SQL. Conocemos la forma básica de utilizar este operando que permite verificar que el valor un campo está entre alguno de n valores.Por ejemplo, la instrucción siguiente que selecciona los datos asociados a algunos de los países que se indican se podría escribir como:
Select
*
from
Usuarios
Where Pais=ES' or Pais='PT' or Pais='FR'
Select
*
from
Usuarios
Where Pais in ('ES', 'PT', 'FR')
Comparándolas;
- Semanticamente son iguales, el resultado es el mismo
- Sintacticamente parece mucho mejor la segunda sentencia que la primera
- Más sencilla
- Más legible
- Menos escritura
Además se puede ampliar las posibilidades de IN de la siguiente forma para simplificar la selección de datos
Si tenemos la siguiente sentencia SQL con alguna complicación en la definición del predicado Where mezclando bastantes condiciones and y or para los mismos campos
SELECT
*
FROM
Usuarios
WHERE
(Pais='ES' and Dpto=1) or
(Pais='FR' and Dpto=2) or
(Pais='PT' and Dpto=3)
Se puede simplificar utilizando IN de la siguiente manera ya que se puede incorporar más de un campo para la claúsula
SELECT
*
FROM
Usuarios
WHERE
(Pais, Dpto) in
(values('ES', 1), ('FR', 2), ('PT', 3))
Exelente aporte, me convenciste, ahí en adelante utilizaremos más la instrucción IN, gracias.
ResponderEliminarEstoy agradecido con tus conocimientos y aporte, espero retomes tu blog y continues compartiendo tus conocimientos, gracias.
ResponderEliminarMe alegro que te haya servido. Si, espero sacar algún rato y por lo menos ir incluyendo alguna cosilla
Eliminar