SQLite除法运算符

528 阅读5分钟

当从SQLite的SELECT查询中返回时,Except子句对于排除一些记录是必不可少的。如果我们在连续的SQLite Select语句中使用Except子句,它将返回所有带有第一个选择表达式的数据,除了来自第二个表达式的数据。通过这篇SQLite文章中的例子,我们将了解到SQLite Except操作符。然后,我们将学习如何使用它来检索第一个选择语句中的所有记录,以及第二个选择语句产生的数据。

在大多数情况下,我们利用SQLite Except子句和Select语句。那么,所有包含Except子句的Select语句都应该有相同数量的记录。SQLite中的Except子句在下图中得到了总结。

如果你看一下上面的SQLite Except子句的图示,它将返回处于彩色阴影区域的记录。这表明Except子句将提供第一个Select语句中的所有记录,除了在第二个Select语句中的记录。

SQLite中Except子句的语法。

SQLite Except子句与选择语句一起使用,其模式如下。

SELECTcolumn_Name1,column_Name2,...,columnn_Name_n
FROM TABLE_NAME
[WHERE condition]
EXCEPT

SELECTcolumn_Name1,column_Name2,...,columnn_Name_n
FROM TABLE_NAME
[WHEREcondition] 。

我们在SQLite中认识了两个带有Except操作符的Select查询,正如你在上面看到的。在这种情况下,SQLite Except操作符产生了第一个SELECT查询的条目,这些条目在第二个Select查询中没有出现。我们指定了上面 Except 操作符语法中使用的一些属性。

列。你想比较两个SELECT语句之间的列或操作。对于每个查询,字段不一定要相同,但相关的列必须是类似的数据类型。

表名。表名,你想从其中检索记录。FROM子句必须至少提到一个表。

WHERE条件。这里的Where条件是可选的。我们将Where条件用于选择记录所需的标准。

为 "除 "子句创建表。

在使用除法子句之前,我们应该首先在数据库中构建表。我们已经创建了一个表 "Teacher",并如图中提到的那样设置了它的字段。

在下图中使用插入查询,在表 "教师 "中插入记录。

从SELECT查询中,我们可以获取表的记录,如下所示。

由于我们已经创建了表 "教师"。现在,我们需要为 except 子句制作另一个表。为此,我们在现有数据库中创建了第二个表 "学生"。为 "学生 "表设置字段,如下所述。

然后,我们利用插入查询为 "学生 "表插入了条目,如下所示。

你可以在下面的提示外壳中看到 "学生 "表中的记录。

例1:使用SQLite Except子句和单一表达式的程序。

对于那个基本的SQLite查询,我们将研究如何在带有单列的Select语句中使用SQLite Except子句。在我们的SQLite shell中,我们提供了第一个SELECT表达式,其中包括表 "Student "中的字段ID,然后我们使用Except子句。之后,第二个SELECT表达式被用来选择相同的字段ID,但是从表 "教师 "中选择的。这个EXCEPT子句的例子从表 "学生 "中检索所有的ID条目,但没有从表 "教师 "中检索。这意味着如果一个ID值同时出现在Student和Teacher表中,这个ID值将不会出现在EXCEPT查询数据中。

由于ID "6 "是在表Student中发现的唯一ID,所以在这里的输出中显示了它。

SELECTID
FROMStudent
EXCEPT
SELECTID
FROMTeacher;

例2:使用SQLite Except子句和多重表达式的程序。

接下来,让我们研究一个返回多列的SQLite EXCEPT查询的案例。这里,我们有两个带有WHERE条件的SELECT表达式。我们从表student中抽取了ID、St_NAME、SUBJECT和CGPA这几个字段。然后,我们应用一个WHERE条件,只显示CGPA大于和等于 "3.0 "的记录。我们有第二个SELECT表达式,从表Teacher中选择列ID,T_NAME,T_AGE,和SUBJECT。第二个SELECT表达式使用了WHERE条件,从表Teacher中获取了SUBJECT等于计算机的记录。在这两个SELECT表达式之间,我们有一个EXCEPT子句,它只返回具有指定字段值的表Student的记录,但不返回与Teacher表匹配的字段值。

SELECTID,St_NAME,SUBJECT,CGPA
FROMStudent
WHERECGPA>= 3.0
EXCEPT
SELECTID,T_NAME,T_AGE,SUBJECT
FROMTeacher
WHERESUBJECT= 'Computer' 。

Except查询的输出结果如下。

例3:使用SQLite Except子句和ORDER BY子句的程序。

在这里,我们使用了除法子句,同时使用了降序排序。首先,我们用表Student和Teacher中的不同字段定义了两个SELECT表达式。这些SELECT表达式在它们之间被称为 except子句。由于两个SELECT表达式中的字段名不同,在ORDER BY子句中最好用它们的结果集位置来指代字段。

SELECTID,St_NAME,SUBJECT
FROMStudent
WHERESUBJECT= 'Science'
EXCEPT
SELECTID,T_NAME,SUBJECT
FROMTeacher
WHEREID< 4
ORDER BY 1 DESC;

我们已经成功地从 Except 查询中以降序检索到记录,如下所示。

结论

这就是我们如何利用SQLite Except子句,从符合我们条件的Select语句中检索数据。在这篇文章中,我们已经用图解的方式提供了一个快速介绍。同时,描述了except子句的语法,并在例子中使用这种语法来展示结果。我们可以对单列和多列使用except子句。order by子句也可以和except子句一起使用,以获得排序的结果。