SQL – 选择输入
IN运算符是一个成员运算符,它返回与列表或子查询中的值匹配的值。使用此运算符,我们可以在 WHERE 子句中指定多个值。此运算符将一个值与一组值进行比较,如果该值属于该给定集合,则返回 true,否则返回 false。它是多个OR条件的简写。
语法 1(列表):
SELECT column1, column2….columnN
FROM table_name
WHERE column_name IN (val-1, val-2,…val-N);
语法 2(子查询):
SELECT column1, column2….columnN
FROM table_name1
WHERE column_name IN
(SELECT column_name
FROM table_name2);
让我们在 Microsoft SQL Server 中逐步尝试此操作:
创建数据库:
使用以下 SQL 语句创建名为RECORD的数据库:
CREATE DATABASE RECORD;
更改为数据库:
使用以下 SQL 语句将数据库更改为 RECORD:
USE RECORD;
创建表:
现在我们在我们的 RECORD 数据库中创建一个名为 COURSE 的表:
CREATE TABLE COURSE(
course_id INT,
course_name VARCHAR(20),
duration_of_course INT,
PRIMARY KEY(course_id)
);
现在我们再次在我们的 RECORD 数据库中创建另一个名为 STUDENT 的表:
CREATE TABLE STUDENT(
roll_no INT,
student_name VARCHAR(20),
course_id INT,
PRIMARY KEY(roll_no)
);
在表中插入数据:
使用下面的语句,我们将数据插入到 COURSE 表中:
INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(1, 'BCA', 3);
INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(2, 'MCA', 3);
INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(3, 'B.E.', 4);
INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(4, 'M.E.', 2);
INSERT INTO COURSE(course_id, course_name, duration_of_course) VALUES(5, 'Integrated BE and ME', 5);
同样,使用下面的语句,我们将数据插入到 STUDENT 表中:
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(1, 'ANDREW', 1);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(2, 'BOB', 1);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(3, 'CHARLES', 1);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(4, 'DAIZY', 3);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(5, 'EMMANUEL', 2);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(6, 'FAIZAL', 2);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(7, 'GEORGE', 4);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(8, 'HARSH', 5);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(9, 'ISHA', 2);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(10, 'JULIAN', 2);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(11, 'KAILASH', 3);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(12, 'LAIBA', 5);
INSERT INTO STUDENT(roll_no, student_name, course_id) VALUES(13, 'MICHAEL', 3);
显示表的数据:
现在使用以下语句显示 COURSE 表的内容:
SELECT * FROM COURSE;
再次使用以下语句显示 STUDENT 表的内容:
SELECT * FROM STUDENT;
带有列表的 IN 子句:
SELECT * FROM
STUDENT
WHERE course_id
IN (1, 2, 3);
带有子查询的 IN 子句:
SELECT * FROM
STUDENT
WHERE course_id
IN (SELECT course_id FROM
COURSE
WHERE duration_of_course = 3);