select id, b1, b2, b3, b4, b5
from (
select A.id,
@ := (select GROUP_CONCAT(DISTINCT id ORDER BY RAND()) AS ids from B),
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 1), ',', -1) b1,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 2), ',', -1) b2,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 3), ',', -1) b3,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 4), ',', -1) b4,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 5), ',', -1) b5
from A
) t
Example: http://sqlfiddle.com/#!2/d7df9/9