MySQL,连接两列


85

MySQL表中有两列:SUBJECTYEAR

我想生成一个字母数字唯一数字,其中包含SUBJECT和YEAR的级联数据。

我怎样才能做到这一点?是否可以使用像这样的简单运算符+

Answers:


183

您可以使用如下CONCAT功能:

SELECT CONCAT(`SUBJECT`, ' ', `YEAR`) FROM `table`

更新:

要获得该结果,您可以尝试以下操作:

SET @rn := 0;

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

1
您的第一个答案SELECT CONCACT(SUBJECT, ' ', YEAR)确实帮助了我。+1
FastTrack

4
当要连接的字段上的任何行为空时,结果为null。该问题的解决方案是什么?
TSR

2
@TSR好问题!我找到了答案。如果这些字段之一恰好为空,则需要使用MySQL IFNULL op。所以上面就像:SELECT CONCAT(IFNULL(SUBJECT,''),'-',IFNULL(YEAR,''),'-',LPAD(@rn:= @ rn + 1,3,'0'))FROMtable
罗根

17

您可以为此使用CONCAT()中内置的php。

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 

然后输出 在此处输入图片说明


1
真好 仅出于您的信息,这里使用的CONCAT是MySQL内置函数,而不是php函数。
Yousaf Hassan

6

在php中,我们有两个选择来连接表列。

使用查询的首选

在查询中,CONCAT关键字用于连接两列

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

第二种选择使用符号(。)

从数据库表中获取数据后,将值分配给变量,然后使用(。)符号并将值连接起来

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

代替下划线(_),我们将使用空格,逗号,字母,数字..etc


-1
$crud->set_relation('id','students','{first_name} {last_name}');
$crud->display_as('student_id','Students Name');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.