SELECT id FROM table2 WHERE class = "一班"; #1
SELECT * FROM table1 WHERE pid = 1;
查询结果等效于:
SELECT * FROM table1 WHERE pid = (SELECT id FROM table2 WHERE class = "一班");
id
name
pid
1
小明
1
2
小芳
1
多行单列子查询。 对查询的list集合进行判断。
in、(符号)any、(符号)all
1. in: 和其中任意一项相同。
2. =any: 和in相同。
3. >any: 大于最小。
4. <any: 小于最大。
5. >all: 大于最大。
6. <all: 小于最小。
SELECT * FROM table1 WHERE pid IN (SELECT id FROM table2);
SELECT * FROM table1 WHERE pid >ANY (SELECT id FROM table2);
SELECT * FROM table1 WHERE pid <ALL (SELECT id FROM table2);
id
name
pid
1
小明
1
2
小芳
1
3
小强
2
id
name
pid
3
小强
2
4
小李
3
id
name
pid
多列子查询。 其实就是为了减少笛卡尔积。
SELECT * FROM table1 LEFT JOIN (SELECT * FROM table2 WHERE class = "一班") tab ON tab.id = table1.pid;