首页  >  文章  >  数据库  >  如何连接 MySQL 列而不列出所有列?

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

Barbara Streisand
Barbara Streisand原创
2024-10-25 05:27:29852浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn