SubSELECTs Syntax Variants
mysql>
The following query returns all book titles whose publisher's name begins with "O."
Then, a list of publID values for the key word IN is returned with a separate SELECT query.
mysql>
mysql>
mysql> CREATE TABLE titles (
-> titleID int(11),
-> title varchar(100),
-> subtitle varchar(100),
-> edition tinyint(4),
-> publID int(11),
-> catID int(11),
-> langID int(11),
-> year int(11),
-> isbn varchar(20),
-> comment varchar(255),
-> ts timestamp,
-> authors varchar(255),
-> PRIMARY KEY (titleID)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql>
mysql>
mysql> INSERT INTO titles VALUES (1,'Linux','Installation',5,1,57,2,2000,NULL,NULL,'2005-02-28 13:34:21','Michael'),
-> (2,'Excel',NULL,NULL,2,3,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','David'),
-> (3,'XML',NULL,NULL,1,2,NULL,1997,NULL,NULL,'2005-02-28 13:34:22','Edwards'),
-> (4,'PHP',NULL,NULL,3,6,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','Tom'),
-> (5,'MySQL','',0,3,34,NULL,2000,'','','2005-02-28 13:34:22','Paul'),
-> (6,'Java',NULL,NULL,4,34,NULL,1999,NULL,NULL,'2005-02-28 13:34:22','Tim');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql>
mysql> CREATE TABLE publishers (
-> publID int(11) NOT NULL auto_increment,
-> publName varchar(60) collate latin1_german1_ci NOT NULL default '',
-> ts timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
-> PRIMARY KEY (publID),
-> KEY publName (publName)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql>
mysql> INSERT INTO publishers VALUES (1,'A','2004-12-02 18:36:58'),
-> (2,'Apress','2004-12-02 18:36:58'),
-> (3,'New Riders','2004-12-02 18:36:58'),
-> (4,'O\'Reilly & Associates','2004-12-02 18:36:58'),
-> (5,'Hanser','2004-12-02 18:36:58');
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql>
mysql>
mysql> SELECT title FROM titles WHERE publID IN
-> (SELECT publID FROM publishers WHERE publName LIKE 'O%');
+-------+
| title |
+-------+
| Java |
+-------+
1 row in set (0.00 sec)
mysql>
mysql> drop table titles;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table publishers;
Query OK, 0 rows affected (0.00 sec)
Related examples in the same category