web-dev-qa-db-fra.com

comment concaténer deux colonnes en une avec le nom de colonne existant dans mysql?

Je veux concaténer deux colonnes dans une table avec un nom de colonne existant à l'aide de mysql. 

Un exemple: j'ai une colonne FIRSTNAME et LASTNAME et autant de colonnes également. Je veux concaténer ces deux colonnes avec le nom de FIRSTNAME uniquement.

Alors j'ai essayé comme ça:

 SELECT *, CONCAT(FIRSTNAME, ',', LASTNAME) AS FIRSTNAME FROM `customer`;

mais il affiche les deux champs avec le nom de FIRSTNAME. un champ a des valeurs normales et un autre a des valeurs concaténées. Je veux seulement une colonne avec ces valeurs concaténer. Je peux sélectionner des colonnes simples, mais j'ai plus de 40 colonnes dans mon tableau.

Est-il possible de supprimer la colonne d'origine en utilisant mysql lui-même?

33
Manik

Comme l'a souligné aziz-shaikh, il n'y a aucun moyen de supprimer une colonne individuelle de la directive *, mais vous pourrez peut-être utiliser le hack suivant:

SELECT CONCAT(c.FIRSTNAME, ',', c.LASTNAME) AS FIRSTNAME,
       c.*
FROM   `customer` c;

Cela fera que la deuxième occurrence de la colonne FIRSTNAME adoptera le pseudonyme FIRSTNAME_1 et vous devriez donc pouvoir traiter en toute sécurité votre colonne FIRSTNAME personnalisée. Vous devez aliaser la table car * dans une position autre que celle au début échouera s'il n'est pas aliasé.

J'espère que cela pourra aider!

51
Raad

Au lieu d’obtenir toutes les colonnes de la table à l’aide de * dans votre instruction SQL, vous spécifiez les colonnes dont vous avez besoin.

Vous pouvez utiliser l'instruction SQL quelque chose comme: 

SELECT CONCAT(FIRSTNAME, ' ', LASTNAME) AS FIRSTNAME FROM customer;

BTW, pourquoi ne pourriez-vous pas utiliser FullName au lieu de FirstName? Comme ça: 

SELECT CONCAT(FIRSTNAME, ' ', LASTNAME) AS 'CUSTOMER NAME' FROM customer;
8
Alex Alvarez

Supprimez le * de votre requête et utilisez des noms de colonne individuels, comme suit:

SELECT SOME_OTHER_COLUMN, CONCAT(FIRSTNAME, ',', LASTNAME) AS FIRSTNAME FROM `customer`;

Utiliser * signifie, dans vos résultats, vous voulez toutes les colonnes de la table. Dans votre cas, * comprendra également FIRSTNAME. Vous concaténez ensuite certaines colonnes et utilisez l'alias FIRSTNAME. Cela crée 2 colonnes avec le même nom.

1
Aziz Shaikh

Je suis novice et je l’ai fait de cette façon: 

Create table Name1
(
F_Name varchar(20),
L_Name varchar(20),
Age INTEGER
)

Insert into Name1
Values
('Tom', 'Bombadil', 32),
('Danny', 'Fartman', 43),
('Stephine', 'Belchlord', 33),
('Corry', 'Smallpants', 95)
Go

Update Name1
Set F_Name = CONCAT(F_Name, ' ', L_Name)
Go

Alter Table Name1
Drop column L_Name
Go

Update Table_Name
Set F_Name
0
user10689173

Vous pouvez essayer ce moyen simple de combiner des colonnes:

select some_other_column,first_name || ' ' || last_name AS First_name from customer;
0
Ayush gupta