开发者社区 问答 正文

将列值设置为SQL查询结果中的列名?mysql

我想读取一个表,该表的值将是sql查询结果的列名。例如,我将table1作为..

id col1 col2

0 name ax 0 name2 bx 0 name3 cx 1 name dx 1 name2 ex 1 name3 fx
如果看到id = 0,则name的值为ax,name2为bx,name3为cx。将行显示为id,name,name2,name3而不是行。现在,我希望查询结果看起来像这样:

id name name2 name3 0 ax bx cx 1 dx ex fx 有人可以帮助我实现这一目标吗?

展开
收起
保持可爱mmm 2020-05-17 19:51:45 1311 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 这是通过数据透视表完成的。按分组id,您CASE为要在列中捕获的每个值发出语句,并使用诸如MAX()聚合之类的方法消除空值并折叠成一行。

    SELECT id, /* if col1 matches the name string of this CASE, return col2, otherwise return NULL / / Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */ MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name, MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2, MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3 FROM yourtable GROUP BY id ORDER BY id 这是一个工作样本 注意:这仅适用于有限且已知数量的可能值col1。如果可能值的数量未知,则需要在循环中动态构建SQL语句。来源:stack overflow

    2020-05-17 20:30:56 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等