2012-04-27 9 views
70

В таблице MySQL есть два столбца: SUBJECT и YEAR.MySQL, объединить два столбца

Я хочу сгенерировать буквенно-цифровой уникальный номер, который содержит конкатенированные данные из SUBJECT и YEAR.

Как я могу это сделать? Можно ли использовать простой оператор, например +?

ответ

151

Вы можете использовать функцию CONCAT так:

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

Update:

Чтобы получить тот результат, который вы можете попробовать это:

SET @rn := 0; 

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

Ваш первый ответ «SELECT CONCACT (SUBJECT, '', YEAR)« действительно помог мне. +1 – FastTrack

+1

Результат равен null, если любая строка пуста в полях для concat. Каково решение этой проблемы? – TSR

-8

первым создать столбец в таблице newcol_name как это - попробуйте это - update table_name Set 'newcol_name' = CONCACT(SUBJECT, ' ', YEAR) ;

+1

Нет! Если для любого raison (например, поиска в этом поле) вам нужен новый столбец, вам нужно использовать VIEW: https://dev.mysql.com/doc/refman/5.7/en/create-view.html – rebe100x

3

В php у нас есть два варианта конкатенации столбцов таблицы.

Первый вариант с помощью запроса

В запросе CONCAT ключевое слово, используемое для конкатенации двух столбцов

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

Второй вариант, используя символ (.)

После выборки данных из таблицы базы данных присвойте значения переменной, затем используйте (.) Символ и сцепить значения

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

Вместо подчеркивания (_), мы будем использовать пространство, запятую, буквы, numbers..etc

2

Вы можете использовать PHP встроенный в CONCAT() для этого.

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

изменения подали имя как ваше требование

то результат

enter image description here

и если вы хотите Concat же, поданных с использованием другого поля, которое же тогда

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

, то это результат enter image description here

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

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/18796600) –

Смежные вопросы