Maison > base de données > tutoriel mysql > Comment concaténer des colonnes MySQL sans lister toutes les colonnes ?

Comment concaténer des colonnes MySQL sans lister toutes les colonnes ?

Barbara Streisand
Libérer: 2024-10-25 05:27:29
original
983 Les gens l'ont consulté

How to concatenate MySQL columns without listing all columns?

Comment concaténer efficacement les colonnes MySQL

Concaténer toutes les colonnes dans MySQL à l'aide du mot-clé * n'est pas réalisable. Au lieu de cela, vous devez lister explicitement toutes les colonnes que vous souhaitez combiner.

Concaténation explicite des colonnes

Pour y parvenir, utilisez la fonction CONCAT :

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
Copier après la connexion

Vous pouvez également utiliser CONCAT_WS pour omettre les valeurs nulles :

SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
Copier après la connexion

Concaténation dynamique des colonnes

Si la spécification manuelle des colonnes n'est pas pratique, envisagez d'utiliser une requête dynamique pour obtenir tous les noms de colonnes :

SELECT `column_name` 
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable'
Copier après la connexion

Combinez ce résultat avec GROUP_CONCAT pour générer une liste de noms de colonnes entre guillemets, séparés par des virgules :

GROUP_CONCAT(CONCAT('`', column_name, '`'))
Copier après la connexion

Requête dynamique complète

Avec ces éléments, vous pouvez construire une requête dynamique :

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;
Copier après la connexion

Cette requête génère une chaîne de type :

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
Copier après la connexion

Exécutez cette chaîne en utilisant :

PREPARE stmt FROM @sql;
EXECUTE stmt;
Copier après la connexion

Cette approche élimine le besoin de listage manuel des colonnes, garantissant une concaténation dynamique et évolutive.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal