SQL循序渐进(15)IN 和 BETWEEN 条件运算符

IN 和 BETWEEN 条件运算符

下面是IN条件运算符的SQL语句:

SELECT column1, SUM(column2)

FROM "list-of-tables"

WHERE column3 IN (list-of-values);

下面是BETWEEN条件运算符的SQL语句:

SELECT column1, SUM(column2)

FROM "list-of-tables"

WHERE column3 BETWEEN value1 AND value2;

实际上,IN条件运算符是一个设置成员测试运算符,也就是说,它用于测试是否一个数值处在IN关键字之后提供的数值之中。举个例子如下:

SELECT employeeid, lastname, salary

FROM employee_info

WHERE lastname IN ('Hernandez', 'Jones', 'Roberts', 'Ruiz');

这条语句是从employee_info表中选择lastname等于Hernandez、Jones、 Roberts或者 Ruiz名字之一的列employeeid、 lastname和 salary。如果它在其中就将返回行。

IN条件运算符可以使用混合条件来替代,比如你可以使用等号运算符或者使用OR运算符等等,但是结果是一样的,例如:

SELECT employeeid, lastname, salary

FROM employee_info

WHERE lastname = 'Hernandez' OR lastname = 'Jones' OR lastname = 'Roberts' OR lastname = 'Ruiz';

你可以观察到,利用IN运算符时语句会更加简短并且容易读,特别是在你测试两个或者三个数值以上的时候尤为突出。

当然你也可以使用NOT IN 来在你的列表中排除行的。

而BETWEEN条件运算符是用与测试一个数值是否处在BETWEEN关键字两边指定数值的中间,比如:

SELECT employeeid, age, lastname, salary

FROM employee_info

WHERE age BETWEEN 30 AND 40;

这条SQL语句是从employee_info表中选择age处于30到40岁之间(包括30岁和40岁)的列employeeid、age、 lastname和salary。

这条语句同样可以不用BETWEEN运算符,而使用混合条件来替代,例如:

SELECT employeeid, age, lastname, salary

FROM employee_info

WHERE age >= 30 AND age <= 40;

当然,你也可以类似于NOT IN的方法,使用NOT BETWEEN来排除一些数据。

时间: 2024-10-03 00:44:01

SQL循序渐进(15)IN 和 BETWEEN 条件运算符的相关文章

SQL循序渐进(目录)

教程提纲: SQL循序渐进(1)-------介绍SQL SQL循序渐进(2)-------表的基础知识 SQL循序渐进(3)-------数据检索 SQL循序渐进(4)-------创建表 SQL循序渐进(5)-------插入数据到表 SQL循序渐进(6)-------删除表 SQL循序渐进(7)-------更新记录 SQL循序渐进(8)-------删除记录 SQL循序渐进(9)-------SELECT语句 SQL循序渐进(10)------合计函数 SQL循序渐进(11)------

SQL点滴15—在SQL Server 2008中调用C#程序

原文:SQL点滴15-在SQL Server 2008中调用C#程序 T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可以在SQL Server 2008中扩展C#程序来完成循环等过程式的查询,或者其他SQL不便实现的功能.这个随笔中将介绍在SQL Server中扩展C#程序实现正则表达式的替换功能. 新建一个类库程序命名为Regex,打开Visual Studio 2008,点击File,点击New,点击Proje

SQL循序渐进(4)创建表

创建表 这个create table语句是用于创建一个新的表格.以下是一个简单创建表格语句的格式: create table "tablename" ("column1" "data type", "column2" "data type", "column3" "data type"); 如果你想使用可选的约束,创建表格的格式为: create table &quo

SQL循序渐进(24)嵌入SQL

嵌入SQL 为了更好的理解嵌入SQL,本节利用一个具体例子来说明.嵌入SQL允许程序连接数据库并且包括SQL代码到程序中,这样在程序中就可以对数据库进行使用.操作以及处理数据等等.以下是用C语言编写的使用嵌入SQL的例程,它将打印一个报告:这个程序必须在普通的编译之前先预编译SQL语句.嵌入SQL对于不同系统是不一样的,所以在不同的系统中对以下的程序稍作修改,特别是变量的声明以及过程记录等.在嵌入SQL时,考虑网络.数据库管理系统.操作系统是相当重要的. 以下是详细的代码: #include <

SQL循序渐进(23)UNION 和 外部连接

UNION 和 外部连接 有些时候,你可以想一起看多个查询的结果.组合它们的输出,你可以使用UNION关键字.为了合并以下两个查询的输出:显示所有买方的ID和已经有定货的顾客,你可以使用以下语句: SELECT BUYERID FROM ANTIQUEOWNERS UNION SELECT OWNERID FROM ORDERS; 这里要注意SQL要求SELECT的列表必须匹配,即列于数据类型匹配.在本例子中,BuyerID 和OwnerID都是相同的数据类型,同为Interger(整型).同时

SQL循序渐进(22)EXISTS 和 ALL

EXISTS 和 ALL EXISTS使用了一个子查询作为条件,只有当子查询返回行的时候这个条件才为真,如果子查询不返回任何的行条件就为假.如果商店在处理Chair的时候,有个顾客想看看所有拥有者的列表,就可以使用EXSIST,语句如下: SELECT OWNERFIRSTNAME, OWNERLASTNAME FROM ANTIQUEOWNERS WHERE EXISTS (SELECT * FROM ANTIQUES WHERE ITEM = 'Chair'); 如果在Antiques列中有

SQL循序渐进(20)Aliases 、In以及子查询

Aliases .In以及子查询 在本节教程中,我们将要介绍Aliases. In以及子查询的用法.首先我们看一下一个查询语句,它搜索所有已经定货的顾客的LastName以及他们定什么货,语句如下: SELECT OWN.OWNERLASTNAME Last Name, ORD.ITEMDESIRED Item Ordered FROM ORDERS ORD, ANTIQUEOWNERS OWN WHERE ORD.OWNERID = OWN.OWNERID AND ORD.ITEMDESIRE

SQL循序渐进(19)DISTINCT和排除复制

DISTINCT和排除复制 假如你象列出所有买过古董的ID和名字,很明显,你可能会将所有的顾客都列出来而没有考虑有些顾客是买过多讲古董的,所以这时你会发现有些数据是重复的.这就意味着你需要通知SQL来排除复制的行,而不管这个顾客买过多少个古董只需要列出一次即可.为了实现这个目的,你可以使用DISTINCT关键字. 首先我们需要为AntiqueOwners表来一个equijoin以得到顾客的LastName和First的详细数据.但是,你要考虑到Antiques表中的SellerID列是Antiq

SQL循序渐进(17)JOIN子句

JOIN子句 不知你有没有发现直到现在我们利用SELECT语句来检索的时候只能从一个表中进行.如果你想从两个表或者更多的表中进行检索,该怎么办呢?好在我们可以使用SQL和关系数据库系统的一个很有用的特性,即"Join".为了简单说明,实际上"Join"就是使得关系数据库系统相关的东东."Join"允许你从两个表或者更多的表连接数据进行数据检索,而只需要利用一个SELECT语句.如果在FROM关键字之后有多个表的话,"Join"