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?
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!
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;
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.
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
Vous pouvez essayer ce moyen simple de combiner des colonnes:
select some_other_column,first_name || ' ' || last_name AS First_name from customer;