A JOIN in MySQL combines rows from two or more tables based on a related column. A UNION, on the other hand, is used to combine the result set of two or more SELECT statements. The main difference is that JOIN combines columns from different tables, while UNION combines rows from different tables.