Where is use for SELECT statement to filter rows while Having is used when using aggregate functions such as GROUP BY for filtering rows.
Example:
WHERE -> SELECT * FROM tbl_name WHERE fieldname = 1
—
HAVING -> SELECT album, COUNT( track_number ) FROM tbl_tracks JOIN tbl_album
ON tbl_album.id = tbl_tracks.id
GROUP BY tbl_tracks.id
HAVING tracks >= 10