动态连接所有 MySQL 列
在 MySQL 中,不支持使用 * 通配符连接所有列。相反,您需要在 CONCAT() 或 GROUP_CONCAT() 函数中显式指定每个列名称。
显式列连接:
您可以使用 CONCAT()函数连接特定列:
<code class="sql">SELECT CONCAT(col1, col2, col3, ...) FROM yourtable;</code>
或者,使用 CONCAT_WS() 连接具有指定分隔符的列,跳过空值:
<code class="sql">SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable;</code>
动态列连接:
为了避免手动指定列名,可以使用动态查询从 information_schema.columns 表中检索所有列名:
<code class="sql">SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable';</code>
然后,使用 GROUP_CONCAT() 组合这些列名称:
<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
这将产生一个用逗号分隔的带引号的列名称列表,例如:
<code class="sql">`col1`,`col2`,`col3`,`col4`,...</code>
使用此,您可以创建动态查询来连接所有列:
<code class="sql">SET @sql = CONCAT( 'SELECT CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') AS all_columns FROM yourtable;' );</code>
最后执行动态查询:
<code class="sql">PREPARE stmt FROM @sql; EXECUTE stmt;</code>
以上是如何动态连接所有 MySQL 列?的详细内容。更多信息请关注PHP中文网其他相关文章!