MySQL中的JOIN和HAVING兩個關鍵字經常被用于聯合查詢來顯示多個表的數據。JOIN在兩個或多個表中匹配行,HAVING在匹配行中過濾結果。
JOIN有幾種類型,包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN。它們決定了如何返回JOIN的結果,這里只介紹INNER JOIN。
INNER JOIN返回兩個表中匹配行的交集。它需要至少一個匹配條件。例如:
SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;
這里是orders和customers表的INNER JOIN。JOIN條件是orders表的customer_id列等于customers表的customer_id列。SELECT語句中使用*通配符以返回所有列。
HAVING在查詢結果中對匹配的行進行過濾,通過使用聚合函數(例如SUM、AVG、COUNT、MIN和MAX)來指定過濾條件。HAVING的語法與WHERE非常相似,示例如下:
SELECT customer_id, SUM(total_amount) as total FROM orders GROUP BY customer_id HAVING total >1000;
這里的查詢返回每個客戶的訂單總額,并顯示總額大于1000的客戶。GROUP BY子句根據customer_id分組,并使用SUM聚合函數計算每個組的total_amount總和。然后HAVING子句通過過濾掉total小于或等于1000的行來限制結果。