If you don't know the number of addresses per id before hand
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(CASE WHEN rnum = ', rnum,
' THEN address END) `address', rnum, '`'))
INTO @sql
FROM
(
SELECT id, address, @n := IF(@g = id, @n + 1, 1) rnum, @g := id
FROM table1 CROSS JOIN (SELECT @n := 0, @g := NULL) i
ORDER BY id, address
) q;
SET @sql = CONCAT('SELECT id,', @sql,
' FROM
(
SELECT id, address, @n := IF(@g = id, @n + 1, 1) rnum, @g := id
FROM table1 CROSS JOIN (SELECT @n := 0, @g := NULL) i
ORDER BY id, address
) q
GROUP BY id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Here is SQLFiddle demo