За да свържете всички колони в таблица, не можете да използвате *
ключова дума, но трябва изрично да посочите всички колони:
SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
или може да искате да използвате CONCAT_WS
което ще пропусне нулеви стойности:
SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
Ако не искате да посочите всички имена на колони ръчно, можете да използвате динамична заявка. Тази заявка ще върне всички имена на колони на вашата таблица:
SELECT `column_name`
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable';
и с помощта на GROUP_CONCAT можете да получите списък с всички имена на колони:
GROUP_CONCAT(CONCAT('`', column_name, '`'))
цитирани, във формат, разделен със запетая:
`col1`,`col2`,`col3`,`col4`,...
така че сега имаме всички елементи, за да създадем динамично нашата заявка:
SELECT
CONCAT(
'SELECT CONCAT_WS(\'\',',
GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name),
') AS all_columns FROM yourtable;')
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable'
INTO @sql;
тази заявка ще зададе низа @sql на нещо като:
SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
и този код ще го изпълни:
PREPARE stmt FROM @sql;
EXECUTE stmt;
Моля, вижте цигулка тук .