Uso de SI EXISTE en la base de datos MySQL

Preet Sanghavi 30 enero 2023
  1. Uso básico del operador EXISTS en MySQL
  2. Uso del operador IF EXISTS en MySQL
Uso de SI EXISTE en la base de datos MySQL

En este tutorial, nuestro objetivo es explorar la declaración IF EXISTS en MySQL.

Sin embargo, antes de comenzar, creamos un conjunto de datos ficticio para trabajar. Aquí creamos una tabla, student_details, junto con algunas filas en ella.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

La consulta anterior crea una tabla junto con filas con el nombre y apellido del estudiante. Para ver las entradas en los datos, usamos el siguiente código.

SELECT * FROM student_details;

El código mencionado anteriormente dará el siguiente resultado:

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

Uso básico del operador EXISTS en MySQL

La condición EXISTS en MySQL se usa generalmente junto con una subconsulta que consiste en una condición que debe cumplirse. Si se cumple esta condición, la subconsulta devuelve un mínimo de una fila. Este método se puede utilizar para DELETE, SELECT, INSERT, o UPDATE una sentencia.

-- Here we select columns from the table based on a certain condition
SELECT column_name  
FROM table_name  
WHERE EXISTS (  
    SELECT column_name   
    FROM table_name   
    WHERE condition  
);  

Aquí, condition representa la condición de filtrado al seleccionar las filas de una columna en particular.

Para comprobar si existe un alumno en la columna stu_firstName donde stu_id = 4, usaremos el siguiente código:

-- Here we save the output of the code as RESULT
SELECT EXISTS(SELECT * from student_details WHERE stu_id=4) as RESULT;  

El código mencionado anteriormente dará el siguiente resultado:

RESULT
1

1 en el bloque de código anterior representa un valor booleano, lo que sugiere que hay un estudiante con stu_id = 4.

Uso del operador IF EXISTS en MySQL

A veces, deseamos verificar la existencia de un valor particular en una tabla y alterar nuestra salida en función de la existencia de esa condición. La sintaxis de esta operación es la siguiente:

SELECT IF( EXISTS(
             SELECT column_name
             FROM table_name
             WHERE condition), 1, 0)

Aquí, la salida de la consulta es 1, si la declaración IF devuelve Verdadero. De lo contrario, devuelve 0.

Escribamos una consulta que devuelva Yes, exists, si un estudiante con stu_id=4 existe en la tabla. De lo contrario, queremos devolver No, no existe. Para realizar esta operación, eche un vistazo al siguiente código:

SELECT IF( EXISTS(
             SELECT stu_firstName
             FROM student_details
             WHERE stu_id = 4), 'Yes, exists', 'No, does not exist') as RESULT;

El código mencionado anteriormente dará el siguiente resultado:

RESULT
Yes, exists

Ahora, intentemos encontrar un alumno con stu_id = 11. Esta operación se puede realizar con la siguiente consulta:

SELECT IF( EXISTS(
             SELECT stu_firstName
             FROM student_details
             WHERE stu_id = 11), 'Yes, exists', 'No, does not exist') as RESULT;

Nota: Usamos ALIAS RESULT para mostrar nuestra salida en el bloque de código de salida.

El código mencionado anteriormente dará el siguiente resultado:

RESULT
No, does not exist

Nota: Generalmente, las consultas SQL que usan el método EXISTS en MySQL son muy lentas porque la subconsulta es RE-EJECUTAR para cada entrada en la tabla de la consulta externa. Existen métodos más rápidos y eficientes para formular la mayoría de las consultas sin utilizar la condición EXISTS.

Por lo tanto, hemos implementado con éxito IF EXISTS en MySQL.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Artículo relacionado - MySQL Query