SQL SELECT IN là một toán tử logic trong Ngôn ngữ truy vấn có cấu trúc. Nó được sử dụng trong các truy vấn SQL để giảm việc sử dụng nhiều toán tử 'OR'. s
Toán tử IN trong SQL cũng cho phép dễ dàng kiểm tra điều kiện khớp với bất kỳ giá trị nào trong danh sách các giá trị. Nó làm giảm số lượng toán tử OR trong các truy vấn SQL.
Cú pháp của toán tử IN trong SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (VALUE1, VALUE2);
Cú pháp truy vấn con của toán tử IN trong SQL:
SELECT COLUMNNAME FROM TABLENAME WHERE COLUMNNAME IN (SELECT STATEMENT);
Trong cú pháp trên, chúng ta cũng có thể sử dụng toán tử IN với truy vấn con.
Hãy hiểu khái niệm CHỌN TRONG trong SQL với sự trợ giúp của các ví dụ.
Hãy xem xét các bảng sau có các bản ghi sau:
Bảng 1:Nhân viên
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # | 5 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | DÂY | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | KIỂM TRA | 4 |
Bảng 2:Người quản lý
Managerid | manager_name | manager_department |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | KIỂM TRA |
5 | Akash Kadam | C # |
Ví dụ 1: Viết truy vấn để tìm nạp id nhân viên, tên, họ và Thành phố từ bảng của nhân viên trong đó Thành phố bao gồm một trong các danh sách là Mumbai, Pune và Delhi trong bảng.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES WHERE CITY IN ('MUMBAI', 'PUNE', 'DELHI');
Trong câu lệnh trên, chúng tôi đã truy xuất id nhân viên, họ và tên và Thành phố từ bảng của nhân viên, trong đó Thành phố bao gồm một trong các tên thành phố, Mumbai, Pune và Delhi. Tất cả các tên thành phố này được chuyển dưới dạng một tham số trong toán tử IN dưới dạng các giá trị. Bảng sẽ dành cho tất cả các bản ghi có thành phố của nhân viên khớp với danh sách thành phố của tham số toán tử IN.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | THÀNH PHỐ |
1001 | VAIBHAVI | MISHRA | PUNE |
2002 | BHAVESH | JAIN | PUNE |
2003 | RUCHIKA | JAIN | MUMBAI |
3001 | PRANOTI | CHIA SẺ | PUNE |
3003 | DEEPAM | JAUHARI | MUMBAI |
4001 | RAJESH | MỤC TIÊU | MUMBAI |
4003 | RUCHIKA | AGARWAL | DELHI |
5001 | ARCHIT | SHARMA | DELHI |
Nó chỉ hiển thị tám nhân viên có tên thành phố khớp với danh sách tham số biểu thức toán tử IN.
Ví dụ 2: Viết truy vấn để tìm nạp id nhân viên, họ, tên, lương và Phòng ban từ bảng của nhân viên trong đó lương bao gồm một trong các danh sách là 50500, 55500 và 65500 trong bảng.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT FROM EMPLOYEES WHERE SALARY IN (50500, 55500, 65500);
Trong câu lệnh trên, chúng tôi đã truy xuất id nhân viên, họ và tên, tiền lương và Phòng ban từ bảng của nhân viên trong đó tiền lương bao gồm một trong các mức lương là 50500, 55500 và 65500. Tất cả các mức lương này được truyền dưới dạng tham số trong Toán tử IN dưới dạng các giá trị. Bảng sẽ dành cho tất cả các bản ghi có mức lương của nhân viên khớp với danh sách lương tham số của toán tử IN.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | KHOA |
1001 | VAIBHAVI | MISHRA | 65500 | ORACLE |
1003 | NIKHIL | VANI | 50500 | FMW |
2001 | PRACHI | SHARMA | 55500 | ORACLE |
2002 | BHAVESH | JAIN | 65500 | FMW |
3001 | PRANOTI | CHIA SẺ | 55500 | JAVA |
3002 | ANUJA | DÂY | 50500 | FMW |
5001 | ARCHIT | SHARMA | 55500 | KIỂM TRA |
Nó chỉ hiển thị bảy nhân viên có mức lương khớp với danh sách tham số biểu thức toán tử IN.
Ví dụ 3: Viết truy vấn để lấy id nhân viên, tên, họ, lương và Thành phố từ những nhân viên có mức lương của nhân viên lớn hơn 60000 hoặc thành phố của nhân viên bao gồm một trong các danh sách thành phố là 'Mumbai', 'Pune' và 'Jaipur' trong bảng.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY > 60000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
Trong câu lệnh trên, chúng tôi đã tìm nạp id nhân viên, họ, tên, lương và Thành phố từ bảng nhân viên trong đó mức lương của nhân viên lớn hơn 60000 hoặc thành phố của nhân viên bao gồm một trong danh sách thành phố này là 'Mumbai', 'Pune', ' Jaipur '. Phần đầu tiên của câu lệnh SELECT WHERE mệnh đề là SALARY> 60000 và phần cuối cùng là CITY IN ('PUNE', 'MUMBAI', 'JAIPUR'), vì chúng tôi đã sử dụng toán tử HOẶC, kết quả sẽ là từ cả hai điều kiện.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE |
3002 | ANUJA | DÂY | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI |
Nó chỉ hiển thị tám bản ghi từ bảng có mức lương lớn hơn 60000 hoặc tên Thành phố khớp với danh sách tham số biểu thức toán tử IN.
Ví dụ 4: Viết truy vấn để lấy id nhân viên, Lương, Thành phố và Phòng ban từ bảng nhân viên trong đó bộ phận nhân viên bao gồm một trong các danh sách là 'Oracle', 'FMW' và cả Thành phố bao gồm một trong các danh sách là 'Delhi', 'Noida', 'Pune'.
SELECT EMPLOYEEID, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT IN ('ORACLE', 'FMW') AND CITY IN ('PUNE', 'NOIDA', 'DELHI');
Chúng tôi đã truy xuất id nhân viên, tiền lương, Thành phố và Phòng ban từ bảng của nhân viên trong câu lệnh trên. Bộ phận nhân viên bao gồm một trong các danh sách bộ phận được truyền cho tham số toán tử IN. Thành phố nhân viên bao gồm một trong các danh sách thành phố được chuyển đến tham số toán tử IN và kết quả chỉ bao gồm những chi tiết nhân viên phù hợp với cả hai điều kiện.
Đầu ra:
EMPLOYEEID | TIỀN LƯƠNG | THÀNH PHỐ | KHOA |
1001 | 65500 | PUNE | ORACLE |
2002 | 65500 | PUNE | FMW |
4003 | 60000 | DELHI | ORACLE |
Chỉ có ba bản ghi từ bảng Nhân viên có thành phố nhân viên bao gồm Pune, Delhi và Noida, và Bộ bao gồm Oracle, FMW.
Ví dụ 5: Viết truy vấn để tìm nạp id nhân viên, họ, tên, lương, Thành phố và Bộ phận từ bảng của nhân viên trong đó lương của nhân viên lớn hơn 60000 và Thành phố bao gồm một trong các danh sách ở Pune, Jaipur, Mumbai hoặc Bộ bao gồm một trong các danh sách là Java, Thử nghiệm, C #.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY, DEPARTMENT FROM EMPLOYEES WHERE SALARY > 60000 AND CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') OR DEPARTMENT IN ('JAVA', 'TESTING', 'C#');
Trong câu lệnh trên, chúng tôi đã sử dụng toán tử OR, toán tử AND và nhiều toán tử IN với câu lệnh SELECT để tìm nạp id nhân viên, tên, họ, lương, Thành phố và Phòng ban từ bảng của nhân viên. Trước tiên, truy vấn SELECT tìm nạp các bản ghi nhân viên có mức lương> 60000 VÀ Thành phố IN ('Pune', 'Mumbai', Jaipur), chỉ những nhân viên đó. Cả hai điều kiện đều đúng và ở cuối Department IN ('Java', 'Testing', 'C #'), truy vấn này sẽ tìm kiếm trong kết quả giai đoạn đầu mà các bản ghi nhân viên đó mà chúng tôi truy xuất được có Phòng một trong các danh sách mà chúng tôi đã chuyển đến Toán tử IN và cũng đi đến phần còn lại của các bản ghi trong bảng nếu bất kỳ bản ghi nào được tìm thấy có tên bộ phận, chúng tôi đã chuyển cho tham số toán tử IN mà bản ghi đó sẽ được thêm vào kết quả.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA |
5001 | ARCHIT | SHARMA | 55500 | DELHI | KIỂM TRA |
Chỉ có 9 hồ sơ của những nhân viên có mức lương lớn hơn 60000. City bao gồm một trong những danh sách mà chúng tôi đã chuyển làm tham số cho nhà điều hành City IN hoặc Bộ bao gồm một trong những danh sách mà chúng tôi đã chuyển cho nhà điều hành Department IN.
Ví dụ 6: Viết một truy vấn phụ để tìm nạp thông tin chi tiết của nhân viên từ bảng nhân viên trong đó hệ thống quản lý lớn hơn 2 từ bảng người quản lý.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGERID > 2);
Trong câu lệnh trên, truy vấn con Đầu tiên sẽ được thực thi SELECT MANAGERID FROM MANAGER WHERE MANAGERID> 2; đầu ra sẽ là id người quản lý lớn hơn 2 truyền làm tham số trong mệnh đề WHERE của truy vấn chính và đầu ra cuối cùng sẽ là từ bảng nhân viên trong đó id người quản lý nhân viên bao gồm một trong các danh sách là đầu ra của truy vấn phụ.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA | 3 |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI | KIỂM TRA | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | KIỂM TRA | 4 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | C # | 5 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | C # | 5 |
Chỉ có bảy bản ghi từ bảng của nhân viên có id người quản lý lớn hơn 2.
Ví dụ 7: Viết một truy vấn phụ để tìm nạp thông tin chi tiết của nhân viên trong đó bộ phận quản lý bao gồm một trong các danh sách là oracle, java và FMW.
SELECT * FROM EMPLOYEES WHERE MANAGERID IN (SELECT MANAGERID FROM MANAGER WHERE MANAGER_DEPARTMENT IN ('ORACLE', 'FMW', 'JAVA'));
Trong câu lệnh trên, trước tiên chúng ta tìm nạp id người quản lý từ bảng người quản lý nơi bộ phận người quản lý bao gồm một trong các danh sách là Oracle, FMW, Java. Sau đó, truy vấn chính sẽ tìm nạp thông tin chi tiết của nhân viên từ đầu ra của truy vấn phụ.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ | KHOA | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | DÂY | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA | JAVA | 3 |
Ví dụ 8: Viết truy vấn để tìm nạp id nhân viên, họ, tên, lương, Thành phố từ bảng của nhân viên có mức lương từ 50000 đến 65000 hoặc Thành phố bao gồm một trong các danh sách là Pune, Jaipur và Mumbai.
SELECT EMPLOYEEID, FIRST_NAME, LAST_NAME, SALARY, CITY FROM EMPLOYEES WHERE SALARY BETWEEN 50000 AND 65000 OR CITY IN ('PUNE', 'MUMBAI', 'JAIPUR');
Trong câu lệnh trên, chúng tôi đã tìm nạp id nhân viên, họ, tên, lương và Thành phố từ bảng của nhân viên, nơi lương của nhân viên từ 50000 đến 65000 hoặc Thành phố bao gồm một trong các danh sách là Pune, Mumbai, Jaipur.
Đầu ra:
EMPLOYEEID | FIRST_NAME | LAST_NAME | TIỀN LƯƠNG | THÀNH PHỐ |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA |
1003 | NIKHIL | VANI | 50500 | JAIPUR |
2001 | PRACHI | SHARMA | 55500 | ĐIỀU CHỈNH |
2002 | BHAVESH | JAIN | 65500 | PUNE |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI |
3001 | PRANOTI | CHIA SẺ | 55500 | PUNE |
3002 | ANUJA | DÂY | 50500 | JAIPUR |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI |
4001 | RAJESH | MỤC TIÊU | 60500 | MUMBAI |
4002 | ASHWINI | TÚI XÁCH | 54500 | NOIDA |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI |
5001 | ARCHIT | SHARMA | 55500 | DELHI |