SQL 3. 高级数据过滤 - 4 多值检测

来源:互联网 发布:域名投资技巧 编辑:程序博客网 时间:2024/05/23 18:59

例1:“公司要为年龄为23岁、25岁和28岁的员工发福利,请将他们的年龄、工号和姓名检索出来”,

 

要完成这样的功能,我们可以使用OR语句来连接多个等于判断。SQL语句如下:

SELECT FAge, FNumber, FName FROM T_Employee WHERE FAge=23 or FAge=25 or FAge=28

 

不过,如果要求我们“检索年龄为21岁、22岁、25岁、28岁、30岁、33岁、35岁、38岁、46岁的员工信息” 那么我们就用OR连接9个等于判断,SQL语句如下:

SELECT * FROM T_Employee where Fage = 21 or Fage = 22 or Fage =25 or Fage = 28 or Fage = 30 or Fage = 33 or Fage = 35 or Fage = 38 or Fage = 46

 

这不仅写起来非常麻烦,而且维护的难度也相当大,一部小新就会造成数据错误。为了解决多个离散值的匹配问题,SQL提供了IN 语句,我们只需指定要匹配的数据集合就可以了,使用方法为"IN(值1, 值2,值3)"

 

要完成例1的的话,可以用下面的SQL语句:

SELECT FAge, FNumber, FName FROM T_Employee WHERE FAge IN (23,25,28)

+------+----------+-------+
| Fage | fnumber  | fname |
+------+----------+-------+
|   25 | DEV001   | Tom   |
|   28 | DEV002   | Jerry |
|   23 | HR001    | Jane  |
|   25 | HR002    | Tina  |
|   28 | IT001    | Smith |
|   25 | SALES001 | Timmy |
+------+----------+-------+

 

我们还可以使用IN 让字段与其他表中的值进行匹配,比如“查找所有姓名中迟到记录表中的员工的信息,要实现这样的功能就需要

IN 搭配子查询来使用,关于这一点我们将在后面的章节中介绍。