Tricky but possible I think:
Have a peek at this and see if you understand it at all.
SELECT *,
CASE
WHEN (table1.col1=table2.col1 AND table1.col2<>table2.col2 AND table1.col3<>table2.col3)
OR (table1.col1<>table2.col1 AND table1.col2=table2.col2 AND table1.col3<>table2.col3)
OR (table1.col1<>table2.col1 AND table1.col2<>table2.col2 AND table1.col3=table2.col3)
THEN 1
ELSE
CASE
WHEN
(table1.col1=table2.col1 AND table1.col2=table2.col2 AND table1.col3<>table2.col3)
OR (table1.col1=table2.col1 AND table1.col2<>table2.col2 AND table1.col3=table2.col3)
OR (table1.col1<>table2.col1 AND table1.col2=table2.col2 AND table1.col3=table2.col3)
THEN 2
ELSE
CASE
WHEN
(table1.col1=table2.col1 AND table1.col2=table2.col2 AND table1.col3=table2.col3)
THEN 3
ELSE 0
END
END
END as m
FROM a,table2
ORDER BY m DESC;