En este artículo, veremos cómo filtrar una tabla usando otra tabla. Podemos realizar la función usando una subconsulta en lugar de la condición en la Cláusula WHERE. Una consulta dentro de otra consulta se llama subconsulta. También se puede llamar una consulta anidada. Un código SQL puede tener una o más de una consulta anidada.
Sintaxis:
SELECT * FROM table_name WHERE column_name=( SELECT column_name FROM table_name);
La consulta escrita después de la cláusula WHERE es la subconsulta en la sintaxis anterior.
Ahora, para la demostración, siga los pasos a continuación:
Paso 1: Crear una base de datos
podemos usar el siguiente comando para crear una base de datos llamada geeks.
Consulta:
CREATE DATABASE geeks;
Paso 2 : usar la base de datos
Use la siguiente instrucción SQL para cambiar el contexto de la base de datos a geeks:
Consulta:
USE geeks;
Paso 3: definición de la tabla
Tenemos dos tablas llamadas ‘demo_table1’ y ‘demo_table2’ en la base de datos de nuestro geek.
Consulta (demo_table1):
CREATE TABLE demo_table1( NAME VARCHAR(20), AGE int, CITY VARCHAR(10), INCOME int);
Consulta (demo_table2):
CREATE TABLE demo_table2( NAME VARCHAR(20), AGE int, INCOME int);
Paso 4: Insertar datos en una tabla
Consulta (demo_table1):
INSERT INTO demo_table1 VALUES ('Romy',23,'Delhi',400000), ('Pushkar',23,'Delhi',700000), ('Nikhil',24,'Punjab',350000), ('Rinkle',23,'Punjab',600000), ('Samiksha',23,'Banglore',800000), ('Ashtha',24,'Banglore',300000), ('Satish',30,'Patna',450000), ('Girish',30,'Patna',5500000), ('Ram', 20 , 'Patna',650000), ('Raj', 12, 'Delhi',380000);
Consulta (demo_table2):
INSERT INTO demo_table2 VALUES ('Fanny',25,600000 ), ('Prem', 30,450000), ('Preeti',21,250000 ), ('Samita',32,440000), ('Ozymandias',34,650000);
Paso 5: Ver el contenido de la tabla.
Ejecute la siguiente consulta para ver el contenido de la tabla.
Consulta:
SELECT * FROM demo_table1;
Producción:
Consulta:
SELECT * FROM demo_table2;
Producción:
Paso 6: filtrar la tabla usando otra tabla
Para la demostración, filtraremos los datos demo_table1 cuyos INGRESOS sean mayores que los INGRESOS máximos en semo_table2.
Para obtener el salario máximo de demo_table2:
Consulta:
SELECT MAX(INCOME) FROM demo_table2;
La consulta anterior utilizada se utilizará como subconsulta para filtrar demo_table1.
Consulta final:
SELECT * FROM demo_table WHERE INCOME > (SELECT MAX(INCOME) FROM demo_table2);
Producción:
En la imagen, puede ver que los datos de demo_table1 se filtran si tienen INGRESOS superiores a 650000 (valor de ingreso máximo en demo_table2).
Publicación traducida automáticamente
Artículo escrito por romy421kumari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA