Using the EXISTS Operator with subquery : EXISTS « Query Select « Oracle PL/SQL Tutorial






SQL> CREATE TABLE empExam (
  2     empID  INT NOT NULL,
  3     ExamID     INT NOT NULL,
  4     Mark       INT,
  5     Taken   SMALLINT,
  6     Comments   VARCHAR(255),
  7     CONSTRAINT PK_empExam PRIMARY KEY (empID, ExamID));

Table created.

SQL>
SQL>
SQL> INSERT INTO empExam (empID,ExamID,Mark,Taken,Comments) VALUES (1,1,55,1,'Satisfactory');

1 row created.

SQL> INSERT INTO empExam (empID,ExamID,Mark,Taken,Comments) VALUES (1,2,73,1,'Good result');

1 row created.

SQL> INSERT INTO empExam (empID,ExamID,Mark,Taken,Comments) VALUES (2,3,44,1,'Hard');

1 row created.

SQL> INSERT INTO empExam (empID,ExamID,Mark,Taken,Comments) VALUES (2,5,39,0,'Simple');

1 row created.

SQL> INSERT INTO empExam (empID,ExamID,Mark,Taken) VALUES (2,6,63,1);

1 row created.

SQL>
SQL>
SQL>
SQL> CREATE TABLE emp (
  2     empID INT NOT NULL PRIMARY KEY,
  3     Name      VARCHAR(50) NOT NULL);

Table created.

SQL> INSERT INTO emp (empID,Name) VALUES (1,'Tom');

1 row created.

SQL> INSERT INTO emp (empID,Name) VALUES (2,'Jack');

1 row created.

SQL> INSERT INTO emp (empID,Name) VALUES (3,'Mary');

1 row created.

SQL> INSERT INTO emp (empID,Name) VALUES (4,'Bill');

1 row created.

SQL> INSERT INTO emp (empID,Name) VALUES (5,'Cat');

1 row created.

SQL> INSERT INTO emp (empID,Name) VALUES (6,'Victor');

1 row created.

SQL>
SQL>
SQL> SELECT empID, Name FROM emp s
  2  WHERE EXISTS (
  3     SELECT empID FROM empExam e
  4     WHERE Mark < 40 AND e.empID = s.empID);

     EMPID NAME
---------- --------------------------------------------------
         2 Jack

1 row selected.

SQL>
SQL>
SQL>
SQL> drop table emp;

Table dropped.

SQL> drop table empExam;

Table dropped.








2.18.EXISTS
2.18.1.EXISTS and NOT EXISTS Versus IN and NOT IN
2.18.2.Not Exist with subquery
2.18.3.Exist with subquery
2.18.4.Using the EXISTS Operator with subquery
2.18.5.not exists and subquery
2.18.6.exists in subquery