MySQL IN Operator

Introduction

In this chapter, we will learn about the IN operator in MySQL. The IN operator is used to filter the result set based on a specified list of values. It allows you to specify multiple values in a WHERE clause, making it easier to query rows that match any of the given values. We will cover the syntax, examples, and important considerations for using the IN operator.

Syntax

The basic syntax for the IN operator is:

SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (value1, value2, ...);
  • column_name: The column to be checked against the list of values.
  • value1, value2, ...: The values to check for in the column.

Using IN Operator

Example with SELECT

SELECT first_name, last_name, email
FROM students
WHERE last_name IN ('Sharma', 'Singh', 'Verma');

This example retrieves rows where the last_name is either 'Sharma', 'Singh', or 'Verma'.

Example with NOT IN

To find rows that do not match any value in the list, you can use the NOT IN operator.

SELECT first_name, last_name, email
FROM students
WHERE last_name NOT IN ('Sharma', 'Singh', 'Verma');

This example retrieves rows where the last_name is not 'Sharma', 'Singh', or 'Verma'.

Example with Subquery

The IN operator can also be used with a subquery to filter rows based on the result of another query.

SELECT first_name, last_name, email
FROM students
WHERE id IN (SELECT student_id FROM enrollments WHERE course_id = 1);

This example retrieves rows where the id matches any student_id from the enrollments table for course_id 1.

Full Example

Let's go through a full example where we create a table, insert data into it, and use the IN operator to filter records.

  1. Create a Database:
CREATE DATABASE school;
  1. Select the Database:
USE school;
  1. Create a Table:
CREATE TABLE students (
    id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    enrollment_date DATE
);
  1. Insert Data into the Table:
INSERT INTO students (first_name, last_name, email, enrollment_date) VALUES
('Rahul', 'Sharma', 'rahul.sharma@example.com', '2023-07-01'),
('Priya', 'Singh', 'priya.singh@example.com', '2023-07-02'),
('Amit', 'Kumar', 'amit.kumar@example.com', '2023-07-03'),
('Neha', 'Verma', 'neha.verma@example.com', '2023-07-04'),
('Sahil', 'Mehta', 'sahil.mehta@example.com', '2023-07-05');
  1. Use the IN Operator with SELECT:
SELECT first_name, last_name, email
FROM students
WHERE last_name IN ('Sharma', 'Singh', 'Verma');

Output

first_name last_name email
Rahul Sharma rahul.sharma@example.com
Priya Singh priya.singh@example.com
Neha Verma neha.verma@example.com
  1. Use the NOT IN Operator with SELECT:
SELECT first_name, last_name, email
FROM students
WHERE last_name NOT IN ('Sharma', 'Singh', 'Verma');

Output

first_name last_name email
Amit Kumar amit.kumar@example.com
Sahil Mehta sahil.mehta@example.com
  1. Use the IN Operator with a Subquery:
CREATE TABLE enrollments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    student_id INT,
    course_id INT
);

INSERT INTO enrollments (student_id, course_id) VALUES
(1, 1),
(2, 1),
(3, 2),
(4, 1);

SELECT first_name, last_name, email
FROM students
WHERE id IN (SELECT student_id FROM enrollments WHERE course_id = 1);

Output

first_name last_name email
Rahul Sharma rahul.sharma@example.com
Priya Singh priya.singh@example.com
Neha Verma neha.verma@example.com

Important Considerations

  • Performance: Using the IN operator with a large list of values or a subquery can impact performance. Ensure appropriate indexing and optimize queries to improve performance.
  • NULL Values: If the column being checked contains NULL values, they will not match any value in the IN list, unless explicitly handled.

Conclusion

The IN operator is used for filtering data based on a list of values in MySQL queries. This chapter covered how to use the IN operator, provided examples with SELECT statements, NOT IN operator, and subqueries, and discussed important considerations. In the next chapter, we will learn how to use the BETWEEN operator to filter data within a specific range.

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare