xxxxxxxxxx
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT('MAX(IF(s.name = "', `name`,'", `value`,"")) AS ',name)
) INTO @sql
FROM table1;
SET @sql = CONCAT('SELECT s.user_id, ', @sql, '
FROM table1 s
GROUP BY s.user_id
ORDER BY s.user_id');
SELECT @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
xxxxxxxxxx
SELECT
user_id,
MAX(CASE WHEN name = "foo" THEN value END) "foo",
MAX(CASE WHEN name = "bar" THEN value END) "bar",
MAX(CASE WHEN name = "baz" THEN value END) "baz",
MAX(CASE WHEN name = "quux" THEN value END) "quux",
MAX(CASE WHEN name = "waldo" THEN value END) "waldo"
FROM table
GROUP BY user_id
ORDER BY user_id ASC