MySQL,连接两个列

119

MySQL表中有两列: SUBJECTYEAR

我想生成一个包含 SUBJECT 和 YEAR 连接数据的字母数字唯一编号。

如何实现呢?是否可以使用简单的操作符,如+

6个回答

226
你可以像这样使用CONCAT函数:
SELECT CONCAT(`SUBJECT`, ' ', `YEAR`) FROM `table`

更新:

为了获得该结果,您可以尝试这个:

SET @rn := 0;

SELECT CONCAT(`SUBJECT`,'-',`YEAR`,'-',LPAD(@rn := @rn+1,3,'0'))
FROM `table`

3
你的第一个答案 "SELECT CONCACT(SUBJECT, ' ', YEAR)" 真的帮了我大忙。+1 - FastTrack
4
如果需要连接的字段中有任何一行为空,则结果为null。对此问题的解决方案是什么? - TSR
3
@TSR 很好的问题!我为你找到了答案。如果其中一个字段为空,你需要使用MySQL IFNULL运算符。那么上面的语句应该是: SELECT CONCAT(IFNULL(SUBJECT,''),'-',IFNULL(YEAR,''),'-',LPAD(@rn := @rn+1,3,'0')) FROM table - Logan

30

您可以使用MySQL内置的CONCAT()函数来实现此操作。

SELECT CONCAT(`name`, ' ', `email`) as password_email FROM `table`;

根据您的需求更改字段名称

然后结果如下:

输入图像描述

如果您想要使用其他相同字段连接相同的字段,则

SELECT filed1 as category,filed2 as item, GROUP_CONCAT(CAST(filed2 as CHAR)) as item_name FROM `table` group by filed1 

那么这就是输出 输入图像描述


3
好的。仅供您参考,此处使用的CONCAT是MySQL内置函数,而非PHP函数。 - Yousaf Hassan

10

在php中,我们有两种选项来连接表格列。

第一种选项使用查询

在查询中,使用CONCAT关键词来连接两列。

SELECT CONCAT(`SUBJECT`,'_', `YEAR`) AS subject_year FROM `table_name`;

使用符号 ( . ) 的第二种选项

从数据库表中提取数据后,将值赋给变量,然后使用( . )符号连接这些值。

$subject = $row['SUBJECT'];
$year = $row['YEAR'];
$subject_year = $subject . "_" . $year;

我们将使用空格、逗号、字母、数字等,而不是下划线(_)。


3

在查询中,CONCAT_WS()函数。

该函数不仅可以将多个字符串值添加并使它们成为单个字符串值。它还允许您定义分隔符(" ",","," - "," _ "等)。

语法 -

CONCAT_WS( SEPERATOR, column1, column2, ... )

示例

SELECT 
topic, 
CONCAT_WS( " ", subject, year ) AS subject_year 
FROM table

1

我有两列:prenom和nom,所以为了将它们合并成一个名为chauffeur_sortant的列,我使用了以下脚本:

SELECT date as depart, retour, duree_mission, duree_utilisation, difference, observation, concat( tb_chaufeur_sortant.prenom, ' ', tb_chaufeur_sortant.nom) as chauffeur_sortant, concat(tb_chaufeur_entrant.prenom, ' ', tb_chaufeur_entrant.nom) as chauffeur_entrant
FROM tb_passation 
    INNER JOIN tb_vehicule 
         ON tb_vehicule.id = tb_passation.id_vehicule
    INNER JOIN tb_chaufeur_sortant 
         ON tb_chaufeur_sortant.id = tb_passation.id_sortant
    INNER JOIN tb_chaufeur_entrant 
         ON tb_chaufeur_entrant.id = tb_passation.id_entrant WHERE tb_vehicule.id = '';

你好!欢迎来到StackOverflow!请避免将代码作为图片发布,而应该将其作为文本发布。因为这样很难进行调试,并且无法复制到代码编辑器中。 - Kuro Neko

-2
$crud->set_relation('id','students','{first_name} {last_name}');
$crud->display_as('student_id','Students Name');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接