Ich möchte zwei Spalten in einer Tabelle mit einem vorhandenen Spaltennamen mithilfe von MySQL verketten.
Ein Beispiel: Ich habe eine Spalte FIRSTNAME
und LASTNAME
und so auch viele Spalten. Ich möchte diese beiden Spalten nur mit dem Namen verketten FIRSTNAME
.
Also habe ich es so versucht:
SELECT *, CONCAT(FIRSTNAME, ',', LASTNAME) AS FIRSTNAME FROM `customer`;
Es werden jedoch die beiden Felder mit dem Namen angezeigt FIRSTNAME
. Ein Feld hat normale Werte und ein anderes verkettete Werte. Ich möchte nur eine Spalte mit diesen verketteten Werten. Ich kann einzelne Spalten auswählen, habe aber mehr als 40 Spalten in meiner Tabelle.
Gibt es eine Möglichkeit, die ursprüngliche Spalte mit MySQL selbst zu entfernen?
Antworten:
Wie Aziz-Shaikh betont hat, gibt es keine Möglichkeit, eine einzelne Spalte aus der
*
Direktive zu unterdrücken. Möglicherweise können Sie jedoch den folgenden Hack verwenden:SELECT CONCAT(c.FIRSTNAME, ',', c.LASTNAME) AS FIRSTNAME, c.* FROM `customer` c;
Wenn Sie dies tun, übernimmt das zweite Vorkommen der
FIRSTNAME
Spalte den Alias,FIRSTNAME_1
sodass Sie Ihre angepassteFIRSTNAME
Spalte sicher adressieren können sollten . Sie müssen die Tabelle mit einem Alias versehen, da*
eine andere Position als zu Beginn fehlschlägt, wenn kein Alias vorliegt.Hoffentlich hilft das!
quelle
Anstatt alle Tabellenspalten mit * in Ihrer SQL-Anweisung abzurufen, geben Sie die benötigten Tabellenspalten an.
Sie können die SQL-Anweisung wie folgt verwenden:
SELECT CONCAT(FIRSTNAME, ' ', LASTNAME) AS FIRSTNAME FROM customer;
Übrigens, warum konnten Sie nicht FullName anstelle von FirstName verwenden? So was:
SELECT CONCAT(FIRSTNAME, ' ', LASTNAME) AS 'CUSTOMER NAME' FROM customer;
quelle
Sie können diese einfache Methode zum Kombinieren von Spalten ausprobieren:
select some_other_column,first_name || ' ' || last_name AS First_name from customer;
quelle
Entfernen Sie das
*
aus Ihrer Abfrage und verwenden Sie einzelne Spaltennamen wie folgt:SELECT SOME_OTHER_COLUMN, CONCAT(FIRSTNAME, ',', LASTNAME) AS FIRSTNAME FROM `customer`;
Mit
*
Mitteln möchten Sie in Ihren Ergebnissen alle Spalten der Tabelle. In Ihrem Fall*
wird auch enthaltenFIRSTNAME
. Sie verketten dann einige Spalten und verwenden den Alias vonFIRSTNAME
. Dadurch werden 2 gleichnamige Spalten erstellt.quelle
Entfernen Sie einfach * aus Ihrer select-Klausel, erwähnen Sie alle Spaltennamen explizit und lassen Sie die Spalte FIRSTNAME weg. Danach schreiben Sie CONCAT (FIRSTNAME, ',', LASTNAME) als FIRSTNAME. Die obige Abfrage gibt Ihnen die einzige FIRSTNAME-Spalte.
quelle
Ich bin ein Neuling und habe es so gemacht:
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
quelle