mysql关联查询语句
假设存在以下三张表:
orders
表:记录订单信息,包含order_id
(订单编号)、customer_id
(客户编号)、order_date
(订单日期)等字段。customers
表:记录客户信息,包含customer_id
(客户编号)、customer_name
(客户姓名)、customer_email
(客户邮箱)等字段。products
表:记录产品信息,包含product_id
(产品编号)、product_name
(产品名称)、product_price
(产品价格)等字段。order_items
表:记录订单中的商品信息,包含order_item_id
(订单项编号)、order_id
(订单编号)、product_id
(产品编号)、quantity
(数量)等字段。
1. 内连接(INNER JOIN)
内连接会返回两个表中匹配的记录。下面的例子查询每个订单的客户姓名和订单日期:
mysql-join-examplesMySQL 关联查询示例
生成 inner_join.sql
SELECT customers.customer_name, orders.order_date
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
生成 left_join.sql
SELECT customers.customer_name, orders.order_date
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;
生成 right_join.sql
SELECT customers.customer_name, orders.order_date
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.customer_id;
生成 multi_table_join.sql
SELECT
orders.order_id,
customers.customer_name,
products.product_name,
products.product_price,
order_items.quantity
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id;
2. 左连接(LEFT JOIN)
左连接会返回左表中的所有记录,以及右表中匹配的记录。若右表中没有匹配项,则用 NULL
填充。下面的例子查询所有客户及其订单信息,即便客户没有订单:
3. 右连接(RIGHT JOIN)
右连接与左连接相反,它会返回右表中的所有记录,以及左表中匹配的记录。若左表中没有匹配项,则用 NULL
填充。下面的例子查询所有订单及其对应的客户信息,即便订单没有关联的客户(这种情况通常较少):
4. 多表连接
下面的例子查询每个订单中产品的详细信息,包括订单编号、客户姓名、产品名称、产品价格和数量:
你可以根据实际的表结构和业务需求,对上述 SQL 语句进行调整。