J’ai la structure suivante avec une table MySQL:
+----------------+----------------+----------+ | zipcode | city | state | +----------------+----------------+----------+ | 10954 | Nanuet | NY | +----------------+----------------+----------+
Je veux combiner les 3 colonnes ci-dessus en une seule colonne comme ceci:
+---------------------+ | combined | +---------------------+ | 10954 - Nanuet, NY | +---------------------+
Et je veux append cette colonne “combinée” à la fin de la table sans détruire les 3 champs d’origine.
Créez la colonne:
ALTER TABLE yourtable ADD COLUMN combined VARCHAR(50);
Mettre à jour les valeurs actuelles:
UPDATE yourtable SET combined = CONCAT(zipcode, ' - ', city, ', ', state);
Mettre à jour toutes les valeurs futures automatiquement:
CREATE TRIGGER insert_sortinggger BEFORE INSERT ON yourtable FOR EACH ROW SET new.combined = CONCAT(new.zipcode, ' - ', new.city, ', ', new.state); CREATE TRIGGER update_sortinggger BEFORE UPDATE ON yourtable FOR EACH ROW SET new.combined = CONCAT(new.zipcode, ' - ', new.city, ', ', new.state);
Es-tu sûr de vouloir faire ça? En gros, vous dupliquez les données figurant dans les trois colonnes d’origine. À ce stade, vous devez vous assurer que les données du champ combiné correspondent aux données des trois premières colonnes. Cela représente une charge supplémentaire pour votre application et les autres processus qui mettent à jour le système doivent comprendre la relation.
Si vous avez besoin des données, pourquoi ne pas les sélectionner lorsque vous en avez besoin? Le SQL pour sélectionner ce qui serait dans ce champ serait:
SELECT CONCAT(zipcode, ' - ', city, ', ', state) FROM Table;
De cette manière, si les données des champs changent, vous n’avez pas besoin de mettre à jour votre champ combiné.
Ajouter une nouvelle colonne à votre table et à partir de la requête:
UPDATE tbl SET combined = CONCAT(zipcode, ' - ', city, ', ', state)
SELECT CONCAT (code postal, ‘-‘, ville, ‘,’, état) COMBINÉ À PARTIR DE TABLE