Để nối tất cả các cột trong một bảng, bạn không thể sử dụng *
từ khóa, nhưng bạn cần liệt kê rõ ràng tất cả các cột:
SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
hoặc bạn có thể muốn sử dụng CONCAT_WS
điều đó sẽ bỏ qua các giá trị null:
SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
Nếu bạn không muốn chỉ định tất cả các tên cột theo cách thủ công, bạn có thể sử dụng truy vấn di động. Truy vấn này sẽ trả về tất cả các tên cột trong bảng của bạn:
SELECT `column_name`
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable';
và sử dụng GROUP_CONCAT, bạn có thể nhận được danh sách tất cả các tên cột:
GROUP_CONCAT(CONCAT('`', column_name, '`'))
được trích dẫn, ở định dạng được phân tách bằng dấu phẩy:
`col1`,`col2`,`col3`,`col4`,...
vì vậy bây giờ chúng tôi có tất cả các yếu tố để tạo truy vấn của chúng tôi theo cách di động:
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;
truy vấn này sẽ đặt chuỗi @sql thành một cái gì đó như:
SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
và mã này sẽ thực thi nó:
PREPARE stmt FROM @sql;
EXECUTE stmt;
Vui lòng xem fiddle tại đây .