Mega Code Archive

 
Categories / MySQL Tutorial / Select Query
 

Using EXISTS with subquery

mysql> mysql> CREATE TABLE Books(     ->    BookID SMALLINT NOT NULL PRIMARY KEY,     ->    BookTitle VARCHAR(60) NOT NULL,     ->    Copyright YEAR NOT NULL     -> )     -> ENGINE=INNODB; Query OK, 0 rows affected (0.06 sec) mysql> mysql> INSERT INTO Books VALUES (12786, 'Java',           1934),     ->                          (13331, 'MySQL',          1919),     ->                          (14356, 'PHP',            1966),     ->                          (15729, 'PERL',           1932),     ->                          (16284, 'Oracle',         1996),     ->                          (17695, 'Pl/SQL',         1980),     ->                          (19264, 'JavaScript',     1992),     ->                          (19354, 'www.rntsoft.com', 1993); Query OK, 8 rows affected (0.05 sec) Records: 8  Duplicates: 0  Warnings: 0 mysql> mysql> CREATE TABLE Authors(     ->    AuthID SMALLINT NOT NULL PRIMARY KEY,     ->    AuthFN VARCHAR(20),     ->    AuthMN VARCHAR(20),     ->    AuthLN VARCHAR(20)     -> )     -> ENGINE=INNODB; Query OK, 0 rows affected (0.06 sec) mysql> mysql> INSERT INTO Authors VALUES (1006, 'H', 'S.', 'T'),     ->                            (1007, 'J', 'C',  'O'),     ->                            (1008, 'B', NULL, 'E'),     ->                            (1009, 'R', 'M',  'R'),     ->                            (1010, 'J', 'K',  'T'),     ->                            (1011, 'J', 'G.', 'N'),     ->                            (1012, 'A', NULL, 'P'),     ->                            (1013, 'A', NULL, 'W'),     ->                            (1014, 'N', NULL, 'A'); Query OK, 9 rows affected (0.05 sec) Records: 9  Duplicates: 0  Warnings: 0 mysql> mysql> CREATE TABLE AuthorBook(     ->    AuthID SMALLINT NOT NULL,     ->    BookID SMALLINT NOT NULL,     ->    PRIMARY KEY (AuthID, BookID),     ->    FOREIGN KEY (AuthID) REFERENCES Authors (AuthID),     ->    FOREIGN KEY (BookID) REFERENCES Books (BookID)     -> )     -> ENGINE=INNODB; Query OK, 0 rows affected (0.06 sec) mysql> mysql> INSERT INTO AuthorBook VALUES (1006, 14356),     ->                               (1008, 15729),     ->                               (1009, 12786),     ->                               (1010, 17695),     ->                               (1011, 15729),     ->                               (1012, 19264),     ->                               (1012, 19354),     ->                               (1014, 16284); Query OK, 8 rows affected (0.05 sec) Records: 8  Duplicates: 0  Warnings: 0 mysql> mysql> select * from Authors; +--------+--------+--------+--------+ | AuthID | AuthFN | AuthMN | AuthLN | +--------+--------+--------+--------+ |   1006 | H      | S.     | T      | |   1007 | J      | C      | O      | |   1008 | B      | NULL   | E      | |   1009 | R      | M      | R      | |   1010 | J      | K      | T      | |   1011 | J      | G.     | N      | |   1012 | A      | NULL   | P      | |   1013 | A      | NULL   | W      | |   1014 | N      | NULL   | A      | +--------+--------+--------+--------+ 9 rows in set (0.00 sec) mysql> select * from Books; +--------+----------------+-----------+ | BookID | BookTitle      | Copyright | +--------+----------------+-----------+ |  12786 | Java           |      1934 | |  13331 | MySQL          |      1919 | |  14356 | PHP            |      1966 | |  15729 | PERL           |      1932 | |  16284 | Oracle         |      1996 | |  17695 | Pl/SQL         |      1980 | |  19264 | JavaScript     |      1992 | |  19354 | www.rntsoft.com |      1993 | +--------+----------------+-----------+ 8 rows in set (0.00 sec) mysql> select * from AuthorBook; +--------+--------+ | AuthID | BookID | +--------+--------+ |   1009 |  12786 | |   1006 |  14356 | |   1008 |  15729 | |   1011 |  15729 | |   1014 |  16284 | |   1010 |  17695 | |   1012 |  19264 | |   1012 |  19354 | +--------+--------+ 8 rows in set (0.00 sec) mysql> mysql> SELECT BookID, BookTitle     -> FROM Books AS b     -> WHERE EXISTS     ->    (     ->       SELECT BookID     ->       FROM AuthorBook AS ab     ->       WHERE b.BookID=ab.BookID     ->    )     -> ORDER BY BookTitle; +--------+----------------+ | BookID | BookTitle      | +--------+----------------+ |  12786 | Java           | |  19264 | JavaScript     | |  16284 | Oracle         | |  15729 | PERL           | |  14356 | PHP            | |  17695 | Pl/SQL         | |  19354 | www.rntsoft.com | +--------+----------------+ 7 rows in set (0.00 sec) mysql> mysql> drop table AuthorBook; Query OK, 0 rows affected (0.02 sec) mysql> drop table Books; Query OK, 0 rows affected (0.06 sec) mysql> drop table Authors; Query OK, 0 rows affected (0.06 sec)