Как конкатрировать два столбца в одном с существующим именем столбца в 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