📜  SQL Select中如何排除具有特定值的记录?

📅  最后修改于: 2022-05-13 01:54:28.312000             🧑  作者: Mango

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 的极客都被选中。我们还可以将许多条件组合在一起,并相应地得到不同的结果。