<small id='sbEWB'></small><noframes id='sbEWB'>

    <i id='sbEWB'><tr id='sbEWB'><dt id='sbEWB'><q id='sbEWB'><span id='sbEWB'><b id='sbEWB'><form id='sbEWB'><ins id='sbEWB'></ins><ul id='sbEWB'></ul><sub id='sbEWB'></sub></form><legend id='sbEWB'></legend><bdo id='sbEWB'><pre id='sbEWB'><center id='sbEWB'></center></pre></bdo></b><th id='sbEWB'></th></span></q></dt></tr></i><div id='sbEWB'><tfoot id='sbEWB'></tfoot><dl id='sbEWB'><fieldset id='sbEWB'></fieldset></dl></div>
    <tfoot id='sbEWB'></tfoot>

        <bdo id='sbEWB'></bdo><ul id='sbEWB'></ul>

      1. <legend id='sbEWB'><style id='sbEWB'><dir id='sbEWB'><q id='sbEWB'></q></dir></style></legend>

        MySQL - 如何使用 concat 和 group_concat 将行值显示为列名

        时间:2023-10-08

          • <bdo id='QdxbP'></bdo><ul id='QdxbP'></ul>
            <tfoot id='QdxbP'></tfoot>
            • <small id='QdxbP'></small><noframes id='QdxbP'>

                    <tbody id='QdxbP'></tbody>

                  <i id='QdxbP'><tr id='QdxbP'><dt id='QdxbP'><q id='QdxbP'><span id='QdxbP'><b id='QdxbP'><form id='QdxbP'><ins id='QdxbP'></ins><ul id='QdxbP'></ul><sub id='QdxbP'></sub></form><legend id='QdxbP'></legend><bdo id='QdxbP'><pre id='QdxbP'><center id='QdxbP'></center></pre></bdo></b><th id='QdxbP'></th></span></q></dt></tr></i><div id='QdxbP'><tfoot id='QdxbP'></tfoot><dl id='QdxbP'><fieldset id='QdxbP'></fieldset></dl></div>
                  <legend id='QdxbP'><style id='QdxbP'><dir id='QdxbP'><q id='QdxbP'></q></dir></style></legend>
                1. 本文介绍了MySQL - 如何使用 concat 和 group_concat 将行值显示为列名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  表 1:

                  id   | typeid | available|
                  0    | 1      | 12       |
                  0    | 2      | 44       |
                  

                  表 2:

                  typeid   | typename   |
                  1        | CL          |
                  2        | ML          |
                  

                  我有一个使用 concatgroup_concat 的查询:

                  I have a query using concat and group_concat:

                  select id,concat(group_concat(typename,available)) as types from table1
                  join table2 on table2.typeid=table1.typeid
                  

                  我得到的结果是:

                  id | types   | 
                  0  | CL12,ML44 |
                  

                  但我想这样显示:

                  id   | CL   | ML    |
                  0    | 12   | 44    |
                  

                  有什么方法可以将 group_concat 结果拆分为 列头?

                  Is there any way to split the group_concat result to columns heads?

                  我想从 table2 动态获取数据.某些用户可以将数据添加到 table2.所以硬编码 typename 是不可能的.

                  I want dynamically fetch data from table2. Some user can add data to table2. So hard-coding typename is not possible.

                  推荐答案

                  您应该使用表格透视.MySQL中没有PIVOT命令,可以用这个查询-

                  You should use table pivoting. There is no PIVOT command in MySQL, so you can use this query -

                  SELECT
                    t1.id,
                    MAX(IF(t2.typename = 'CL', t1.available, NULL)) AS CL,
                    MAX(IF(t2.typename = 'ML', t1.available, NULL)) AS ML
                  FROM table1 t1
                    JOIN table2 t2
                      ON t1.typeid = t2.typeid
                  GROUP BY
                    t1.id;
                  

                  MySQL 数据透视表(将行转换为列).

                  如果可能有多个 available 值,请使用 GROUP_CONCAT 函数而不是 MAX.

                  Use GROUP_CONCAT function instead of MAX, if multiple available values are possible.

                  这篇关于MySQL - 如何使用 concat 和 group_concat 将行值显示为列名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:日期的 Oracle SQL 比较返回错误的结果 下一篇:MYSQL INSERT SELECT 问题

                  相关文章

                  <i id='AVgeq'><tr id='AVgeq'><dt id='AVgeq'><q id='AVgeq'><span id='AVgeq'><b id='AVgeq'><form id='AVgeq'><ins id='AVgeq'></ins><ul id='AVgeq'></ul><sub id='AVgeq'></sub></form><legend id='AVgeq'></legend><bdo id='AVgeq'><pre id='AVgeq'><center id='AVgeq'></center></pre></bdo></b><th id='AVgeq'></th></span></q></dt></tr></i><div id='AVgeq'><tfoot id='AVgeq'></tfoot><dl id='AVgeq'><fieldset id='AVgeq'></fieldset></dl></div>

                    <bdo id='AVgeq'></bdo><ul id='AVgeq'></ul>

                    <tfoot id='AVgeq'></tfoot>

                      <small id='AVgeq'></small><noframes id='AVgeq'>

                    1. <legend id='AVgeq'><style id='AVgeq'><dir id='AVgeq'><q id='AVgeq'></q></dir></style></legend>