教程 mariadb tutorial

子查询

1. 什么是子查询

子查询是嵌套在另一个 SQL 查询中的查询语句,常用于在主查询中使用另一个查询的结果。

2. 基本语法

sql
SELECT column1, column2
FROM table1
WHERE column3 IN (
    SELECT column3
    FROM table2
    WHERE condition
);

`

3. 示例

查询所有有订单的客户:

sql
SELECT name
FROM customers
WHERE id IN (
    SELECT customer_id
    FROM orders
);

4. 标量子查询

子查询只返回一个值,可以用于赋值或比较:

sql
SELECT name
FROM customers
WHERE id = (
    SELECT customer_id
    FROM orders
    WHERE order_id = 1001
);

5. 相关子查询

子查询依赖外层查询的字段,每行执行一次:

sql
SELECT c.name,
       (SELECT COUNT(*) FROM orders o WHERE o.customer_id = c.id) AS order_count
FROM customers c;

子查询能够增强查询灵活性,实现复杂的数据筛选和多表关联。