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

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

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

поэтому я попробовал так:

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

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

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

3 ответов


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

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

делать это причинит второе возникновение FIRSTNAME столбец для принятия псевдонима FIRSTNAME_1 таким образом, вы должны иметь возможность безопасно адресовать свой настроенный


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

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

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

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

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

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

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

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