MySQL是最流行的開源數據庫管理系統之一,擁有強大的查詢功能。在MySQL中,外連接可以讓我們在查詢中聯結兩個或多個表,并在結果集中展示不同類型的數據。
MySQL中的外連接可以分為左外連接、右外連接和完全外連接。在這篇文章中,我們將介紹MySQL中五張表的外連接查詢的例子。
表1: orders
CREATE TABLE orders ( order_id int(11) NOT NULL AUTO_INCREMENT, customer_id int(11) DEFAULT NULL, order_date date DEFAULT NULL, total_amount decimal(10,2) DEFAULT NULL, PRIMARY KEY (order_id) );
表2: customers
CREATE TABLE customers ( customer_id int(11) NOT NULL AUTO_INCREMENT, customer_name varchar(50) DEFAULT NULL, city varchar(50) DEFAULT NULL, PRIMARY KEY (customer_id) );
表3: products
CREATE TABLE products ( product_id int(11) NOT NULL AUTO_INCREMENT, product_name varchar(50) DEFAULT NULL, price decimal(10,2) DEFAULT NULL, PRIMARY KEY (product_id) );
表4: order_items
CREATE TABLE order_items ( order_item_id int(11) NOT NULL AUTO_INCREMENT, order_id int(11) DEFAULT NULL, product_id int(11) DEFAULT NULL, quantity int(11) DEFAULT NULL, PRIMARY KEY (order_item_id) );
表5: suppliers
CREATE TABLE suppliers ( supplier_id int(11) NOT NULL AUTO_INCREMENT, supplier_name varchar(50) DEFAULT NULL, city varchar(50) DEFAULT NULL, PRIMARY KEY (supplier_id) );
左外連接查詢orders和customers表
查詢所有的order記錄和匹配的customer信息,如果某個order沒有對應的customer,則返回NULL。
SELECT orders.order_id, orders.order_date, customers.customer_name, customers.city FROM orders LEFT JOIN customers ON orders.customer_id = customers.customer_id;
右外連接查詢orders和customers表
查詢所有的customer記錄和匹配的order信息,如果某個customer沒有對應的order,則返回NULL。
SELECT orders.order_id, orders.order_date, customers.customer_name, customers.city FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id;
完全外連接查詢orders和customers表
查詢所有的order和customer記錄,如果某個order或customer沒有對應的記錄,則返回NULL。
SELECT orders.order_id, orders.order_date, customers.customer_name, customers.city FROM orders FULL OUTER JOIN customers ON orders.customer_id = customers.customer_id;
多表外連接查詢
查詢所有的order記錄,以及每個order的商品,商品價格和供應商名稱。如果某個order沒有對應的商品和供應商記錄,則返回NULL。
SELECT orders.order_id, products.product_name, products.price, suppliers.supplier_name FROM ((orders LEFT JOIN order_items ON orders.order_id = order_items.order_id) LEFT JOIN products ON order_items.product_id = products.product_id) LEFT JOIN suppliers ON products.supplier_id = suppliers.supplier_id;
以上是MySQL中五張表的外連接查詢 示例,如有疑問可以查看MySQL的官方文檔或查詢其他在線資源。