1. 标量子查询 SELECT * FROM tableA WHERE id = (SELECT MAX(id) FROM tableA); 2. 列子查询 SELECT * FROM tableA WHERE id IN (SELECT id FROM tableB WHERE condition); 3. 行子查询 SELECT * FROM tableA WHERE (col1, col2) = (SELECT col1, col2 FROM tableB WHERE condition); 4. 子查询作为表 SELECT * FROM (SELECT col1, col2 FROM tableA WHERE condition) AS t; 5. EXISTS子查询 SELECT * FROM tableA WHERE EXISTS (SELECT * FROM tableB WHERE condition); 6. NOT EXISTS子查询 SELECT * FROM tableA WHERE NOT EXISTS (SELECT * FROM tableB WHERE condition); 7. 子查询作为函数参数 SELECT * FROM tableA WHERE col1 IN (SELECT MAX(col1) FROM tableB WHERE condition); 8. 子查询使用ANY操作符 SELECT * FROM tableA WHERE col1 >ANY (SELECT col1 FROM tableB WHERE condition); 9. 子查询使用ALL操作符 SELECT * FROM tableA WHERE col1 >ALL (SELECT col1 FROM tableB WHERE condition);
以上就是MySQL中常见的子查询类型,应用灵活可以方便大家查找出数据。需要注意的是,子查询也会对性能产生一定的影响,需要在实际使用中根据数据量和查询条件进行选择。