SQL语句怎样查询一个范围

编号1~30其中10和20不查

查询范围在SQL语句中需要用between ...and或者>=及<=语句。

1、创建测试表、插入数据:

create table test
(id int,
name varchar2(20));

insert into test values (1,'张三');
insert into test values (2,'李四');
insert into test values (3,'王五');
insert into test values (4,'赵六');
insert into test values (5,'孙七');

2、执行语句,查询ID范围为2到4之间的内容:

select * from test where id between 2 and 4;

也可以用:

select * from test where id>=2 and id<=4;

结果都是一样的,如图:

说明:between...and语句查询的是一个闭区间的数据,如id between 2 and 4及id中包含2和4,如果用开区间查询,则需要用小于或大于表示。

温馨提示:内容为网友见解,仅供参考
第1个回答  2021-05-29
SQL方法完成数值区间查询
要求:根据奖金等级表的数值区间,返回奖金对应的等级。

1、链接外部数据:数据--现有链接--浏览更多,在路径中选择数据Excel文件和目标工作表,建立数据链接。

详细步骤参考前面所发的SQL相关文章。

2、编写sql语句。
2.1、使用switch函数,SQL语句为:
select 姓名,奖金,switch(奖金<200,"D级",奖金<300,"C级",奖金<500,"B级",奖金>=500,"A级") as 奖金等级 from [奖金$a1:b11]

switch函数直接判断数值,若数值小于200,返回D级;数值小于300返回C级;数值小于500,返回B级;余下的数值条件要变化为>=500返回A级而不是<=700。

2.2、使用iif函数,SQL语句为:
select 姓名,奖金,iif(奖金<200,"D级",iif(奖金<300,"C级",iif(奖金<500,"B级","A级"))) as 奖金等级 from [奖金$a1:b11]

其基本思路和switch函数相同,类似工作表函数if的嵌套。

2.3、使用betweent...and,SQ语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 between b.最小值 and b.最大值

以戴苏明同学为例子,在SQL代码运行的时候,将戴苏明同学的奖金一一和奖金等级表中的数值进行对比,符合区间的就返回区间等级。其他同学亦然。

但是,当奖金超出最大值700的时候就会取不到该条数据。

如刘平的奖金701并不在betweent...and的区间内,返回的结果中没有刘平的数据。

2.4、使用Where比较大小,sql语句为:
select a.姓名,a.奖金,b.等级 from [奖金$a1:b11] a,[奖金等级$] b where a.奖金 >=b.最小值 and a.奖金<=b.最大值

此方法原理和betweent...and一样,当奖金超过最大值700时,数据将有遗漏(刘平)。

当奖金的最大值为700的时候,以上四种方法都得出同样的结果。

当奖金最大值超过700的时候,3、4两个方法将遗漏奖金大于700的数据。

因此,可在设计奖金等级表的时候,可以将最大值700改为一个比较大的数值,使奖金再高也不会超过,则四种方位皆可。

如更改奖金等级表的最大值700为70000,这么大的一个范围,则四种方法都适用。本回答被网友采纳
第2个回答  2013-12-23
select * from 表名 .
where 字段名<>10 and 字段名<>20
第3个回答  2021-05-29
使用sql语句进行多表查询需要使用数据库的连接。
sql中德链接分为内链接,外连接(左外连接,右外连接),交叉链接
根据业务的不同选取不同的连接方式。
内连接:
select
*
from
student
a
inner
join
stumark
b
on
a.stuid=b.stuid
左外连接
select
*
from
student
a
left
join
stumark
b
on
a.stuid=b.stuid
右外连接
select
*
from
stumark
a
right
join
student
b
on
a.stuid=b.stuid
交叉连接
select
*
from
stumark
a
crossjoin
student
b
on
a.stuid=b.stuid
第4个回答  2013-12-23
select top 30 * from biao where id not in(select top 10 * from biao where id>10 and id<20)
相似回答