MySQL, połącz dwie kolumny

85

W tabeli MySQL znajdują się dwie kolumny: SUBJECTi YEAR.

Chcę wygenerować alfanumeryczny, niepowtarzalny numer, który przechowuje połączone dane z TEMATU i ROKU.

Jak mogę to zrobić? Czy można użyć prostego operatora, takiego jak +?

Chandra Sekhar Biswal
źródło

Odpowiedzi:

183

Możesz użyć tej CONCATfunkcji w następujący sposób:

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

Aktualizacja:

Aby uzyskać taki wynik, możesz spróbować tego:

SET @rn := 0;

SELECT CONCAT(`SUBJECT`,'-',`YEAR`,'-',LPAD(@rn := @rn+1,3,'0'))
FROM `table`
Mischa
źródło
1
Twoja pierwsza odpowiedź SELECT CONCACT(SUBJECT, ' ', YEAR)naprawdę mi pomogła. +1
FastTrack
4
Wynik jest pusty, gdy którykolwiek wiersz w polach do konkatacji jest pusty. Jakie jest rozwiązanie tego problemu?
TSR
2
@TSR Dobre pytanie! Znalazłem odpowiedź dla Ciebie. Jeśli jedno z pól jest puste, musisz użyć operacji MySQL IFNULL. Więc powyżej wyglądałoby tak: SELECT CONCAT (IFNULL ( SUBJECT, ''), '-', IFNULL ( YEAR, ''), '-', LPAD (@rn: = @ rn + 1,3, '0')) FROMtable
Logan
17

Możesz użyć do tego php wbudowanego w CONCAT ().

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

zmień nazwę pola jako wymaganie

wtedy wynik jest

wprowadź opis obrazu tutaj

a jeśli chcesz połączyć to samo pole, używając innego pola, które to samo

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

to jest wyjście wprowadź opis obrazu tutaj

Shafiqul Islam
źródło
1
Ładny. Tylko dla twojej informacji, CONCAT użyte tutaj to wbudowana funkcja MySQL, a nie funkcja php.
Yousaf Hassan
6

W php mamy dwie możliwości konkatenacji kolumn tabeli.

Pierwsza opcja za pomocą zapytania

W zapytaniu słowo kluczowe CONCAT używane do konkatenacji dwóch kolumn

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

Druga opcja za pomocą symbolu (.)

Po pobraniu danych z tabeli bazy danych przypisz wartości do zmiennej, następnie za pomocą (.) Symbol i połącz wartości

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

Zamiast podkreślenia (_) użyjemy spacji, przecinka, liter, cyfr… itd

Vasanth
źródło
-1
$crud->set_relation('id','students','{first_name} {last_name}');
$crud->display_as('student_id','Students Name');
Saravanan
źródło