仅在一行中返回sql的结果

时间:2017-02-17 02:09:54

标签: mysql

我使用此查询获取users表中所有可能的成员:

      SELECT u.id as id , 
             u.name as name, 
             u.age as age 
      FROM users u

显然结果是:

 id     name   age  
-----------------------
 21     name1   age1
 22     name2   age2
 23     name3   age3
 24     name4   age4

我想要的是获得以下最终结果:

 id_1     name_1   age_1    id_2     name_2   age_2    id_3    name_3   age_3    id_4     name_4   age_4 
--------------------------------------------------------------------------------------------------------

   21      name1    age1     22      name2    age2      23      name3    age3      24      name4    age4

正如您在最终结果中所看到的,我希望将其返回一行。那可能吗?如果有可能,我可以问你有关如何实现它的任何建议吗?任何答案将不胜感激。

1 个答案:

答案 0 :(得分:0)

该要求在数据操作中看起来并不实用。但如果它是你正在寻找的格式化的意思......

SELECT 
    GROUP_CONCAT(if(id = 21, id, NULL)) AS id_1,
    GROUP_CONCAT(if(id = 21, name, NULL)) AS name_1,
    GROUP_CONCAT(if(id = 21, age, NULL)) AS age_1,
    GROUP_CONCAT(if(id = 22, id, NULL)) AS id_2,
    GROUP_CONCAT(if(id = 22, name, NULL)) AS name_2,
    GROUP_CONCAT(if(id = 22, age, NULL)) AS age_2,
    GROUP_CONCAT(if(id = 23, id, NULL)) AS id_3,
    GROUP_CONCAT(if(id = 23, name, NULL)) AS name_3,
    GROUP_CONCAT(if(id = 23, age, NULL)) AS age_3,
    GROUP_CONCAT(if(id = 24, id, NULL)) AS id_4,
    GROUP_CONCAT(if(id = 24, name, NULL)) AS name_4,
    GROUP_CONCAT(if(id = 214, age, NULL)) AS age_5
FROM users
GROUP BY id