SQLite IN运算符

SQLite IN运算符

SQLite IN运算符用于确定值是否匹配列表或子查询中的任何值。 IN运算符的语法如下:

expression [NOT] IN (value_list|subquery);

expression可以是任何有效的表达式。 它可以是表中的某一列。

值的列表(value_list)是固定值列表或子查询返回的一列的结果集。表的返回类型和列表中的值必须相同。

IN运算符根据表达式是否匹配值列表中的任何值,返回truefalse。要查询非列表中的值匹配,请使用NOT IN运算符。

SQLite IN运算符示例

假设有一个名为STUDENT的表,并具有以下数据:

sqlite> SELECT * FROM STUDENT ;
1|Maxsu|27|Shengzheng|20000.0
2|Minsu|25|Beijing|15000.0
3|Avgsu|23|Shanghai|2000.0
4|Linsu|25|Guangzhou|65000.0
5|Sqlsu|26|Hainan|25000.0
6|Javasu|21|Shengzheng|18000.0
sqlite>

若要查询ID为135的学生信息,可参考以下语句 -

SELECT ID,AGE,NAME,ADDRESS FROM student WHERE ID IN(1,3,5);

执行上面查询语句,得到以下结果 -

上面的查询语句,与下面的OR条件语句效果一样 -

SELECT ID,AGE,NAME,ADDRESS FROM student WHERE ID = 1 OR ID=3 OR ID=5;

IN语句和子查询

假设有一个名称为:department的表,记录每个学生的所在的部门。

sqlite> select id ,dept,emp_id from department;
1|财务部|1
2|技术部|2
3|技术部|3
4|市场部|4
5|市场部|5
sqlite>

其中,emp_id字段引用student表的ID字段,现在查询每个分配了部门的学生的信息,参考以下语句 -

SELECT ID,AGE,NAME,ADDRESS FROM student WHERE ID IN (
    SELECT emp_id FROM  department );

执行上面语句,得到如下结果 -

sqlite> select id ,dept,emp_id from department;
1|财务部|1
2|技术部|2
3|技术部|3
4|市场部|4
5|市场部|5
sqlite>
sqlite> SELECT ID,AGE,NAME,ADDRESS FROM student WHERE ID IN (
   ...>     SELECT emp_id FROM  department );
1|27|Maxsu|Shengzhen
2|25|Minsu|Beijing
3|23|Avgsu|Shanghai
4|25|Linsu|Guangzhou
5|26|Sqlsu|Haikou
sqlite>

SQLite NOT IN示例

查询那些ID不是135学生的信息,参考以下语句 -

SELECT ID,AGE,NAME,ADDRESS FROM student WHERE ID NOT IN(1,3,5);

查询那些未分配部门的学生的信息,参考以下语句 -

SELECT ID,AGE,NAME,ADDRESS FROM student WHERE ID NOT IN (
    SELECT emp_id FROM  department );

执行上面查询语句,得到以下结果 -


目录

SQLite主键