如何在mysql中用已有的列名将两列concatat成一列?

jaxagkaj  于 2022-12-26  发布在  Mysql
关注(0)|答案(6)|浏览(121)

我想用mysql将一个表中的两列与一个已有的列名连接起来。
举个例子:我有一个列FIRSTNAMELASTNAME,还有很多列,我只想用FIRSTNAME的名字连接这两个列。
所以我试着这样:

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

但它显示了两个名为FIRSTNAME的字段。一个字段具有正常值,另一个字段具有连接值。我只需要一列具有这些连接值。我可以选择单列,但我的表中有40多列。
有没有办法用mysql本身删除原来的列?

falq053o

falq053o1#

正如aziz-shaikh所指出的,没有办法从*指令中取消单个列,但是您可以使用以下方法:

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

这样做将导致第二次出现的FIRSTNAME列采用别名FIRSTNAME_1,因此您应该能够安全地寻址定制的FIRSTNAME列。您需要为表设置别名,因为如果不设置别名,则除开头位置以外的任何位置的*都将失败。

oxf4rvwz

oxf4rvwz2#

在SQL语句中不是使用 * 获取所有表列,而是使用指定所需的表列。
您可以使用类似以下的SQL语句:

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

顺便说一句,为什么不能用FullName代替FirstName呢?

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

t1rydlwq3#

您可以尝试使用以下简单方法组合列:

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

ma8fv8wu4#

从查询中删除*,并使用单独的列名,如下所示:

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

使用*意味着,在结果中,您需要表的所有列。在您的情况下,*还将包括FIRSTNAME。然后,您将连接一些列并使用别名FIRSTNAME。这将创建2个同名的列。

oymdgrw7

oymdgrw75#

只需从select子句中删除 *,显式地提及所有列名并省略FIRSTNAME列。然后将CONCAT(FIRSTNAME,',',LASTNAME)AS FIRSTNAME写入。上面的查询将为您提供唯一的FIRSTNAME列。

hgb9j2n6

hgb9j2n66#

我是一个新手,我这样做:

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

相关问题