MySQL, İki sütunu birleştir


86

MySQL tablosunda iki sütun vardır: SUBJECTve YEAR.

SUBJECT ve YEAR'den birleştirilmiş verileri tutan benzersiz bir alfasayısal sayı oluşturmak istiyorum.

Bunu nasıl yapabilirim? Gibi basit bir operatör kullanmak mümkün mü +?

Yanıtlar:


184

CONCATİşlevi şu şekilde kullanabilirsiniz :

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

Güncelleme:

Bu sonucu elde etmek için şunu deneyebilirsiniz:

SET @rn := 0;

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

1
İlk cevabın SELECT CONCACT(SUBJECT, ' ', YEAR)bana gerçekten yardımcı oldu. +1
FastTrack

4
Sonuç, birleştirilecek alanlarda herhangi bir satır boş olduğunda boştur. Bu sorunun çözümü nedir?
TSR

2
@TSR İyi Soru! Cevabı senin için buldum. Alanlardan biri boş olursa, MySQL IFNULL op. Yani yukarıda şu şekilde olacaktır: SELECT CONCAT (IFNULL ( SUBJECT, ''), '-', IFNULL ( YEAR, ''), '-', LPAD (@rn: = @ rn + 1,3, '0')) FROMtable
Logan

17

Bunun için CONCAT () içinde yerleşik php kullanabilirsiniz.

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

dosyalanmış adı gereklilik olarak değiştirin

o zaman sonuç

görüntü açıklamasını buraya girin

ve aynı dosyayı başka bir alanı kullanarak sonuçlandırmak istiyorsanız, o zaman

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

o zaman bu çıktı görüntü açıklamasını buraya girin


1
Güzel. Bilginiz olsun diye burada kullanılan CONCAT bir php işlevi değil, MySQL yerleşik işlevidir.
Yusuf Hassan

6

Php'de, tablo sütunlarını birleştirmek için iki seçeneğimiz var.

Sorguyu Kullanan İlk Seçenek

Sorguda, CONCAT anahtar sözcüğü iki sütunu birleştirmek için kullanılır

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

(.) Sembolünü kullanan İkinci Seçenek

Verileri veritabanı tablosundan getirdikten sonra, değerleri değişkene atayın, ardından (.) Sembolü kullanın ve değerleri birleştirin

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

Alt çizgi (_) yerine boşluklar, virgül, harfler, sayılar ... vb. Kullanacağız.


0

Sorguda, CONCAT_WS()işlev.

Bu işlev yalnızca birden çok dize değeri eklemekle kalmaz ve bunları tek bir dize değeri yapar. Ayırıcı (”", ",", "-", "_" vb.) Tanımlamanıza da izin verir.

Sözdizimi -

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

Misal

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

-1
$crud->set_relation('id','students','{first_name} {last_name}');
$crud->display_as('student_id','Students Name');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.