MySQL 中所有列的串联:替代方法
在 MySQL 中,使用 * 关键字串联所有列是不可行的。要检索跨所有列的串联值字符串,需要显式列名称列表。
显式列列表:
最简单的方法是手动连接各个列列:
SELECT CONCAT(col1, col2, col3, ....) FROM yourtable
CONCAT_WS 函数:
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;
此查询设置@sql 字符串连接的列名称。以下代码执行此查询:
PREPARE stmt FROM @sql; EXECUTE stmt;
以上是如何连接 MySQL 中的所有列:探索替代方法?的详细内容。更多信息请关注PHP中文网其他相关文章!