web-dev-qa-db-de.com

wie man zwei Spalten in eine mit dem vorhandenen Spaltennamen in MySQL einbinden kann?

Ich möchte zwei Spalten in einer Tabelle mit einem vorhandenen Spaltennamen unter Verwendung von Mysql verketten. 

Ein Beispiel: Ich habe eine Spalte FIRSTNAME und LASTNAME und so viele Spalten. Ich möchte diese beiden Spalten nur mit dem Namen FIRSTNAME verketten.

Also habe ich folgendes versucht:

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

es zeigt jedoch die beiden Felder mit dem Namen FIRSTNAME an. Ein Feld hat normale Werte und ein anderes hat 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 mithilfe von mysql selbst zu entfernen?

33
Manik

Wie aziz-shaikh darauf hingewiesen 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;

Dadurch wird beim zweiten Vorkommen der FIRSTNAME-Spalte der Alias ​​FIRSTNAME_1 übernommen, sodass Sie Ihre angepasste FIRSTNAME-Spalte sicher adressieren können. Sie müssen die Tabelle als Aliasnamen verwenden, da * an einer anderen Position als beim Start fehlschlägt, wenn kein Alias ​​erstellt wird.

Hoffentlich hilft das!

51
Raad

Anstatt alle Tabellenspalten mit * in Ihrer SQL-Anweisung zu erhalten, geben Sie die gewünschten Tabellenspalten an.

Sie können die SQL-Anweisung wie folgt verwenden: 

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

BTW, warum können Sie nicht FullName anstelle von FirstName verwenden? So was: 

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

Entfernen Sie den * aus Ihrer Abfrage und verwenden Sie einzelne Spaltennamen wie folgt:

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

Wenn Sie * verwenden, möchten Sie in Ihren Ergebnissen alle Spalten der Tabelle. In Ihrem Fall enthält * auch FIRSTNAME. Sie verketten dann einige Spalten und verwenden den Alias ​​von FIRSTNAME. Dadurch werden 2 Spalten mit demselben Namen erstellt.

1
Aziz Shaikh

Ich bin ein Novize 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
0
user10689173

wählen Sie CONCAT (Vorname, '', Nachname) als benutzerdefinierten Namen von CUSTOMER aus.

0
hasnaintahir

Sie können diese einfache Methode zum Kombinieren von Spalten ausprobieren:

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

Entfernen Sie einfach * aus Ihrer Auswahlklausel und 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.

0
Babasaheb SP