MySQL、2つの列を連結します


85

MySQLテーブルには2つの列があります:SUBJECTYEAR

SUBJECTとYEARからの連結データを保持する英数字の一意の番号を生成したいと思います。

これどうやってするの?のような単純な演算子を使用することは可能+ですか?

回答:


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 2012年

4
連結するフィールドのいずれかの行が空の場合、結果はnullになります。その問題の解決策は何ですか?
TSR

2
@TSR良い質問です!私はあなたのための答えを見つけました。フィールドの1つがたまたまnullの場合は、MySQL IFNULLopを使用する必要があります。したがって、上記は次のようになります。SELECTCONCAT(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は、PHP関数ではなく、MySQLの組み込み関数です。
Yousaf Hassan

6

PHPでは、テーブルの列を連結するための2つのオプションがあります。

クエリを使用した最初のオプション

クエリでは、CONCATキーワードを使用して2つの列を連結しました

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

記号を使用した2番目のオプション(。)

データベーステーブルからデータをフェッチした後、値を変数に割り当て、(。)記号を使用して値を連結します。

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

アンダースコア(_)の代わりに、スペース、コンマ、文字、数字などを使用します


-1
$crud->set_relation('id','students','{first_name} {last_name}');
$crud->display_as('student_id','Students Name');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.