如何使用mysql中的现有列名将两列连接成一列?

时间:2013-11-29 11:18:58

标签: mysql

我想使用mysql将表中的两列与现有列名连接起来。

一个例子:我有一个列FIRSTNAMELASTNAME以及很多列。我想将这两个列连接起来只有FIRSTNAME的名称。

所以我试过这样:

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

但它显示名称为FIRSTNAME的两个字段。一个字段具有正常值,另一个字段具有连接值。我只想要一个具有这些连接值的列。我可以选择单列,但我的表中列数超过40列。

有没有办法使用mysql本身删除原始列?

6 个答案:

答案 0 :(得分:61)

正如aziz-shaikh指出的那样,没有办法从*指令中抑制单个列,但是你可以使用以下hack:

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

执行此操作会导致FIRSTNAME列的第二次出现采用别名FIRSTNAME_1,因此您应该可以安全地处理自定义的FIRSTNAME列。您需要对表进行别名,因为如果没有别名,*在开头以外的任何位置都将失败。

希望有所帮助!

答案 1 :(得分:12)

您可以使用指定所需的表列来代替在sql语句中使用*获取所有表列。

您可以使用SQL语句:

SELECT CONCAT(FIRSTNAME, ' ', LASTNAME) AS FIRSTNAME FROM customer;
顺便说一句,为什么你不能使用FullName而不是FirstName?像这样:

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

答案 2 :(得分:1)

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

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

使用*表示在结果中需要表格的所有列。在您的情况下,*还会包含FIRSTNAME。然后,您将使用FIRSTNAME的别名连接一些列。这将创建2个具有相同名称的列。

答案 3 :(得分:1)

您可以尝试以下简单的方式来合并列:

<annotation-driven />

答案 4 :(得分:0)

只需从select子句中删除*,并显式提及所有列名,然后忽略FIRSTNAME列即可。此后,将CONCAT(FIRSTNAME,',',LASTNAME)写入FIRSTNAME。 上面的查询只会给您一个FIRSTNAME列。

答案 5 :(得分:-1)

我是新手,我这样做是这样的:

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