SQLite IN
运算符用于确定值是否匹配列表或子查询中的任何值。 IN
运算符的语法如下:
expression [NOT] IN (value_list|subquery);
expression
可以是任何有效的表达式。 它可以是表中的某一列。
值的列表(value_list
)是固定值列表或子查询返回的一列的结果集。表的返回类型和列表中的值必须相同。
IN
运算符根据表达式是否匹配值列表中的任何值,返回true
或false
。要查询非列表中的值匹配,请使用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为1
,3
,5
的学生信息,可参考以下语句 -
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
不是1
,3
,5
学生的信息,参考以下语句 -
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 );
执行上面查询语句,得到以下结果 -
上一篇:
Python连接SQLite数据库
下一篇:
SQLite快速入门