The (N+1)th solution:
{#[[1, 1]], Sequence @@ #[[All, 2]]} & /@ GatherBy[data1~Join~data2, First]
Normal[GroupBy[Join[data1, data2], First -> Last, Sequence @@ # &]] /. {Rule -> List} SplitBy[Sort[Join[data1, data2]], First] /. z : {{_List, _Integer} ..} :> {First[First[z]], Sequence @@ z[[All, 2]]}
lots of ways ;-)
You could try:
Merge[{Rule@@@Data1,Rule@@@Data2},Identity] List@@@Normal[%] Prepend[#2,#1]&@@@%