SQL Select中如何排除具有特定值的记录?
在本文中,我们将了解如何从表中排除某些具有特定值的记录。出于演示的目的,我们将在名为“ GeeksForGeeksDatabase ”的数据库中创建一个参与者表。
步骤 1:创建数据库
使用以下 SQL 语句创建名为GeeksForGeeksDatabase的数据库。
询问:
CREATE DATABASE GeeksForGeeksDatabase;
步骤 2:使用数据库
使用以下 SQL 语句将数据库上下文切换到GeeksForGeeksDatabase 。
询问:
USE GeeksForGeeksDatabase;
第 3 步:表定义
询问:
CREATE TABLE Geeks(
GeekID INTEGER PRIMARY KEY,
GeekName VARCHAR(255) NOT NULL,
GeekRank INTEGER NOT NULL,
GeekSchool VARCHAR(255) NOT NULL
);
第 4 步:在表中插入一些数据
询问:
INSERT INTO Geeks VALUES (101, 'Nix',2 ,'Code Valley School');
INSERT INTO Geeks VALUES (102, 'Rutz',4 ,'Blue Chip School');
INSERT INTO Geeks VALUES (103, 'Shrey',1 ,'GCOEA School');
INSERT INTO Geeks VALUES (104, 'Ankx',3 ,'Round Robin Play School');
INSERT INTO Geeks VALUES (105, 'Ridz',7 ,'Dream School');
INSERT INTO Geeks VALUES (106, 'Mayo',6 ,'Silver Shining School');
INSERT INTO Geeks VALUES (107, 'Bugs',5 ,'Twinkle Star Convent');
您可以使用以下语句查看创建的表的内容:
询问:
SELECT * FROM Geeks;
现在让我们看看如何根据某些条件从表中排除一些记录。
方法有很多,我们一一看例子:
询问:
查询以从特定学校(即蓝筹学校)中排除学生。 NOT 显示条件不为 TRUE 的那些记录。
注意:如果我们没有在这里使用 NOT,那么结果将相反。
SELECT * FROM Geeks WHERE NOT GeekSchool = 'Blue Chip School';
此查询将输出除给定学校的学生之外的所有学生:
我们还可以通过提供由 AND OR运算符分隔的 where 条件来排除更多记录。
注意:我们也可以使用 !=运算符来做同样的事情
询问:
SELECT * FROM Geeks WHERE NOT GeekID > 104;
现在看看 NOT 工作方式的不同之处。在示例中,我们提供了条件,当 NOT 为 true 时,表示查询将选择提供的条件不为真的所有行。
在上面的输出中,满足条件 GeekID > 104 并且由于不是所有小于 104 的行都被选中。
注意:我们也可以使用 !=运算符来做同样的事情
询问:
SELECT * FROM Geeks WHERE GeekID NOT IN (104,101,102,107);
在此查询中,我们排除了 GeekID 不在提供的列表中的那些记录(行)(即 GeekID 不应是 104,101,102,107)
因此,结果数据将包含不包括提供的 Geek id 的记录。
因此,我们可以将任何条件应用于表的任何列,并使用 NOT运算符排除那些。
询问:
我们还可以在 IN运算符中提供子查询,也可以使用 WHERE 子句包含一个或多个条件:
SELECT * FROM Geeks WHERE GeekRank NOT IN (SELECT GeekRank FROM Geeks WHERE GeekRank >= 4);
结果表选择了所有不满足条件 GeekRank >=4 的行,因此所有 rank 以上 4 的极客都被选中。我们还可以将许多条件组合在一起,并相应地得到不同的结果。