hoe voeg je twee kolommen samen tot één met de bestaande kolomnaam in mysql?

Ik wil twee kolommen in een tabel samenvoegen met een bestaande kolomnaam met mysql.

Een voorbeeld: ik heb een kolom FIRSTNAMEen LASTNAMEen ook zoveel kolommen. Ik wil deze twee kolommen samenvoegen met alleen de naam FIRSTNAME.

Dus ik probeerde het als volgt:

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

maar het toont de twee velden met de naam FIRSTNAME. het ene veld heeft normale waarden en het andere heeft aaneengeschakelde waarden. Ik wil slechts één kolom met die aaneengeschakelde waarde. Ik kan enkele kolommen selecteren, maar heb meer dan 40 kolommen in mijn tabel.

Is er een manier om de originele kolom te verwijderen met behulp van mysql zelf?


Antwoord 1, autoriteit 100%

Zoals aziz-shaikh heeft aangegeven, is er geen manier om een afzonderlijke kolom uit de *-richtlijn te onderdrukken, maar u kunt mogelijk de volgende hack gebruiken:

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

Als je dit doet, zal de tweede keer dat de kolom FIRSTNAMEvoorkomt de alias FIRSTNAME_1aannemen, zodat je je aangepaste FIRSTNAMEkolom. U moet de tabel een alias geven, omdat *op een andere positie dan aan het begin zal mislukken als er geen alias is.

Hopelijk helpt dat!


Antwoord 2, autoriteit 14%

In plaats van alle tabelkolommen te gebruiken met * in uw sql-instructie, gebruikt u om de tabelkolommen op te geven die u nodig hebt.

Je kunt de SQL-instructie gebruiken als:

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

BTW, waarom zou je FullName niet kunnen gebruiken in plaats van FirstName? Zoals dit:

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

Antwoord 3, autoriteit 5%

U kunt deze eenvoudige manier proberen om kolommen te combineren:

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

Antwoord 4, autoriteit 3%

Verwijder de *uit uw zoekopdracht en gebruik afzonderlijke kolomnamen, zoals deze:

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

Het gebruik van *betekent dat u in uw resultaten alle kolommen van de tabel wilt gebruiken. In jouw geval zal *ook FIRSTNAMEbevatten. U voegt dan enkele kolommen samen en gebruikt de alias van FIRSTNAME. Dit creëert 2 kolommen met dezelfde naam.


Antwoord 5

Verwijder * gewoon uit je select-clausule, vermeld alle kolomnamen expliciet en laat de FIRSTNAME-kolom weg. Schrijf hierna CONCAT(FIRSTNAME, ‘,’, LASTNAME) ALS EERSTENAAM.
De bovenstaande zoekopdracht geeft je de enige FIRSTNAME-kolom.


Antwoord 6

Ik ben een beginneling en ik deed het op deze manier:

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

Other episodes