it-roy-ru.com

как объединить два столбца в один с существующим именем столбца в MySQL?

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

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

Итак, я попытался так:

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

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

Есть ли способ удалить исходный столбец, используя сам MySQL?

33
Manik

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

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

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

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

51
Raad

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

Вы можете использовать оператор SQL что-то вроде: 

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

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

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

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

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

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

1
Aziz Shaikh

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

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

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

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