EXISTS、IN、NOT EXISTS、NOT IN的区别是什么

EXISTS、IN、NOT EXISTS、NOT IN是SQL中的四种不同的操作符,它们用于在查询中过滤数据,这四种操作符的主要区别在于它们处理NULL值的方式不同,本文将详细介绍这四种操作符的区别和用法。

EXISTS、IN、NOT EXISTS、NOT IN的区别是什么

1. EXISTS

EXISTS操作符用于检查子查询是否返回至少一行数据,如果子查询返回至少一行数据,那么EXISTS操作符返回true,否则返回false,EXISTS操作符通常与WHERE子句一起使用,以便根据子查询的结果过滤主查询的数据。

SELECT column_name(s)
FROM table_name
WHERE EXISTS (subquery);

假设我们有两个表,一个是学生表(students),另一个是选课表(course_selections),我们想要找出至少选了一门课的学生,可以使用以下查询:

EXISTS、IN、NOT EXISTS、NOT IN的区别是什么

SELECT * FROM students
WHERE EXISTS (SELECT 1 FROM course_selections WHERE students.id = course_selections.student_id);

2. IN

IN操作符用于检查某个列的值是否在给定的一组值中,如果该列的值在给定的一组值中,那么IN操作符返回true,否则返回false,IN操作符通常与WHERE子句一起使用,以便根据指定的值过滤主查询的数据。

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

假设我们有一个学生表(students),其中包含学生的ID和姓名,我们想要找出ID为1、3和5的学生,可以使用以下查询:

SELECT * FROM students
WHERE id IN (1, 3, 5);

3. NOT EXISTS

NOT EXISTS操作符用于检查子查询是否没有返回任何数据,如果子查询没有返回任何数据,那么NOT EXISTS操作符返回true,否则返回false,NOT EXISTS操作符通常与WHERE子句一起使用,以便根据子查询的结果过滤主查询的数据。

EXISTS、IN、NOT EXISTS、NOT IN的区别是什么

SELECT column_name(s)
FROM table_name
WHERE NOT EXISTS (subquery);

假设我们有两个表,一个是学生表(students),另一个是选课表(course_selections),我们想要找出没有选课的学生,可以使用以下查询:

SELECT * FROM students
WHERE NOT EXISTS (SELECT 1 FROM course_selections WHERE students.id = course_selections.student_id);

4. NOT IN

NOT IN操作符用于检查某个列的值是否不在给定的一组值中,如果该列的值不在给定的一组值中,那么NOT IN操作符返回true,否则返回false,NOT IN操作符通常与WHERE子句一起使用,以便根据指定的值过滤主查询的数据。

SELECT column_name(s)
FROM table_name
WHERE column_name NOT IN (value1, value2, ...);

假设我们有一个学生表(students),其中包含学生的ID和姓名,我们想要找出ID不为1、3和5的学生,可以使用以下查询:

SELECT * FROM students
WHERE id NOT IN (1, 3, 5);

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/35800.html

(0)
K-seoK-seoSEO优化员
上一篇 2023年11月21日 18:59
下一篇 2023年11月21日 19:04

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入