基于与其他表的比较删除某些行的 SQL 查询
在本文中,我们将看到如何根据与其他表的比较来删除某些行。我们可以通过使用子查询代替 WHERE 子句中的条件来执行该函数。子查询是出现在另一个查询中的查询。它也可以称为嵌套查询。
句法:
SELECT * FROM table_name WHERE column_name=
( SELECT column_name FROM table_name);
在 WHERE 子句是子查询之后编写 SELECT 查询。
要从表中删除行:
句法:
DELETE FROM table_name WHERE condition;
现在,对于演示,请按照以下步骤操作:
第一步:创建数据库
我们可以使用以下命令创建一个名为 geeks 的数据库。
询问:
CREATE DATABASE geeks;
第二步:使用数据库
使用以下 SQL 语句将数据库上下文切换到极客:
询问:
USE geeks;
第三步:表定义
我们的极客数据库中有两个名为“ demo_table1 ”和“ demo_table2 ”的表。
查询(demo_table1):
CREATE TABLE demo_table1(
NAME VARCHAR(20),
AGE int,
CITY VARCHAR(10));
查询(demo_table2):
CREATE TABLE demo_table2(
NAME VARCHAR(20),
AGE int);
第 4 步:将数据插入表中
查询(demo_table1):
INSERT INTO demo_table1 VALUES
('Romy',23,'Delhi'),
('Pushkar',23,'Delhi'),
('Nikhil',24,'Punjab'),
('Rinkle',23,'Punjab'),
('Samiksha',23,'Banglore'),
('Ashtha',24,'Banglore'),
('Satish',30,'Patna'),
('Girish',30,'Patna'),
('Ram', 20 , 'Patna'),
('Raj', 12, 'Delhi');
查询(demo_table2):
INSERT INTO demo_table2 VALUES ('Fanny',25 ),
('Prem', 30), ('Preeti',21 ),('Samita',32);
第五步:查看内容
执行以下查询以查看表的内容
询问:
SELECT * FROM demo_table1;
输出:
询问:
SELECT * FROM demo_table2;
输出:
第 6 步:使用子查询根据比较删除行
为了演示,让我们从 demo_table1 中删除 AGE 小于 demo_table2 的最小 AGE 值的行
获取 demo_table2 的最小 AGE 值:
询问:
SELECT MIN(AGE) FROM demo_table2;
现在,我们将使用上述查询作为子查询来删除值小于从查询中获得的值的行。
询问:
DELETE FROM demo_table1 WHERE AGE <
(SELECT MIN(AGE) FROM demo_table2);
现在检查 demo_table1 的内容
输出:
我们可以在图像中看到现在删除了 2 个条目,即 ('Ram', 20 , 'Patna'), ('Raj', 12, 'Delhi') 因为这两个条目的 AGE 值都小于 21(最小年龄来自 demo_table2) 的值。