我想使用mysql将表中的两列与现有列名连接起来。
一个例子:我有一个列FIRSTNAME
和LASTNAME
以及很多列。我想将这两个列连接起来只有FIRSTNAME
的名称。
所以我试过这样:
SELECT *, CONCAT(FIRSTNAME, ',', LASTNAME) AS FIRSTNAME FROM `customer`;
但它显示名称为FIRSTNAME
的两个字段。一个字段具有正常值,另一个字段具有连接值。我只想要一个具有这些连接值的列。我可以选择单列,但我的表中列数超过40列。
有没有办法使用mysql本身删除原始列?
答案 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