Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

SQL CHỌN TRONG

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 50 sắc thái của NULL - Ý nghĩa khác nhau của NULL trong SQL

  2. Hướng dẫn tham gia SQL

  3. Cách không gọi các thủ tục lưu trữ được biên dịch tự nhiên của Hekaton

  4. NextForm v3:Năm tùy chọn để di chuyển dữ liệu và cơ sở dữ liệu

  5. Phỏng vấn Oren Eini của RavenDB về quản lý cơ sở dữ liệu, phân tích và bảo mật