Как конкатрировать два столбца в одном с существующим именем столбца в mysql?

Я хочу объединить два столбца в таблице с существующим именем столбца, используя mysql.

Пример: у меня есть столбец FIRSTNAME и LASTNAME и так много столбцов. Я хочу объединить эти два столбца только с именем FIRSTNAME.

Итак, я пробовал вот так:

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

но он отображает два поля с именем FIRSTNAME. одно поле имеет нормальные значения, а другое имеет конкатенированные значения. Я хочу только один столбец с этим значением concatenate. Я могу выбрать отдельные столбцы, но я имею более 40 столбцов в моей таблице.

Есть ли способ удалить исходный столбец с помощью самой mysql?

Ответ 1

Как указал азиз-шейх, нет способа подавить отдельный столбец из директивы *, однако вы можете использовать следующий хак:

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

Выполнение этого приведет к тому, что второе вхождение столбца FIRSTNAME примет псевдоним FIRSTNAME_1, чтобы вы могли безопасно обращаться к своему настраиваемому столбцу FIRSTNAME. Вам нужно добавить псевдоним таблицы, потому что * в любой позиции, отличной от начального, будет сбой, если не будет сглажен.

Надеюсь, что это поможет!

Ответ 2

Вместо того, чтобы получать все столбцы таблицы, используя * в вашем SQL-заявлении, вы можете указать столбцы таблицы, которые вам нужны.

Вы можете использовать инструкцию SQL, например:

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

Кстати, почему вы не могли использовать FullName вместо FirstName? Вот так:

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

Ответ 3

Удалите * из вашего запроса и используйте имена отдельных столбцов, например:

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

Использование * означает, что в ваших результатах вам нужны все столбцы таблицы. В вашем случае * также будет включать FIRSTNAME. Затем вы объединяете некоторые столбцы и используете псевдоним FIRSTNAME. Это создает 2 столбца с одинаковым именем.

Ответ 4

Вы можете попробовать этот простой способ для объединения столбцов:

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

Ответ 5

Просто удалите * из вашего предложения select, упомяните все имена столбцов в явном виде и опустите столбец FIRSTNAME. После этого напишите CONCAT (FIRSTNAME, ',', LASTNAME) как FIRSTNAME. Приведенный выше запрос даст вам только один столбец FIRSTNAME.

Ответ 6

Я новичок, и я сделал это так:

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