首页 > 数据库 > mysql教程 > 如何连接 MySQL 列而不列出所有列?

如何连接 MySQL 列而不列出所有列?

Barbara Streisand
发布: 2024-10-25 05:27:29
原创
984 人浏览过

How to concatenate MySQL columns without listing all columns?

如何有效连接 MySQL 列

使用 * 关键字连接 MySQL 中的所有列是不可行的。相反,您需要显式列出要组合的所有列。

显式列串联

要实现此目的,请使用 CONCAT 函数:

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
登录后复制

或者,您可以利用 CONCAT_WS 省略空值:

SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
登录后复制

动态列串联

如果手动指定列不方便,请考虑使用动态查询获取所有列名称:

SELECT `column_name` 
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable'
登录后复制

将此结果与 GROUP_CONCAT 组合以生成用逗号分隔的引用列名称列表:

GROUP_CONCAT(CONCAT('`', column_name, '`'))
登录后复制

完整动态查询

使用这些元素,您可以构建动态查询:

SELECT
  CONCAT(
    'SELECT CONCAT_WS(\'\',',
    GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name),
    ') AS all_columns FROM yourtable;')
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable'
INTO @sql;
登录后复制

此查询生成类似于以下内容的字符串:

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
登录后复制

使用以下命令执行此字符串:

PREPARE stmt FROM @sql;
EXECUTE stmt;
登录后复制

这种方法无需手动列出列,从而确保动态且可扩展的串联。

以上是如何连接 MySQL 列而不列出所有列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板