By using the wildcard "%", its finding anything that matches, much like that of doing a DOS search by file names... CM1 is same wildcard as CM16, CM17, CM192, CM11189. Your join should be on exact same postcode, and only use your wildcard on the result criteria you want to restrict down to...
SELECT
user.postcode,
postcode.postcode
FROM user
INNER JOIN postcode ON user.postcode = postcode.postcode
WHERE
user.postcode LIKE "CM%"
LIMIT 0 , 30
DRapp
2010-08-16 12:08:59