在MySQL中将行转换为单个列(8.0.17)

在MySQL中将行转换为单个列(8.0.17),mysql,Mysql,我试着搜索帖子,也没有任何结果,也许我没有使用正确的词 我需要一个MySQL(8.0.17)的解决方案 我有一个表(称为country),有4列: 1. Code 2. Name 3. Continent 4. Region 这些是行 +------+-------------+---------------+---------------------------+ | Code | Name | Continent | Region

我试着搜索帖子,也没有任何结果,也许我没有使用正确的词

我需要一个MySQL(8.0.17)的解决方案

我有一个表(称为
country
),有4列:

1. Code
2. Name
3. Continent
4. Region
这些是行

+------+-------------+---------------+---------------------------+
| Code | Name        | Continent     | Region                    |
+------+-------------+---------------+---------------------------+
| ABW  | Aruba       | North America | Caribbean                 |
| AFG  | Afghanistan | Asia          | Southern and Central Asia |
| AGO  | Angola      | Africa        | Central Africa            |
| AIA  | Anguilla    | North America | Caribbean                 |
| ALB  | Albania     | Europe        | Southern Europe           |
+------+-------------+---------------+---------------------------+
我需要做一个选择它将返回

+----------------------------+
| Contents                   |
+----------------------------+
| ABW                        |                
| Aruba                      |        
| North America              |  
| Caribbean                  |                  
| AFG                        |   
| Afghanistan                |  
| Asia                       |           
| Southern and Central Asia  |
| AGO                        |
| Angola                     |    
| Africa                     |         
| Central Africa             |             
| AIA                        |   
| Anguilla                   |     
| North America              |  
| Caribbean                  |                  
| ALB                        |   
| Albania                    |      
| Europe                     |         
| Southern Europe            |
+----------------------------+
我还想把一条记录的所有4列保存在一起

DROP TABLE IF EXISTS `country`;
CREATE TABLE `country` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `Code` CHAR(3) NOT NULL,
    `Name` CHAR(52) NULL DEFAULT NULL,
    `Continent` VARCHAR(50) NULL DEFAULT NULL,
    `Region` CHAR(26) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

    
    -- ----------------------------
    -- Records of country
    -- ----------------------------
    INSERT INTO `country` (`id`, `Code`, `Name`, `Continent`, `Region`) VALUES (1, 'ABW', 'Aruba', 'North America', 'Caribbean');
INSERT INTO `country` (`id`, `Code`, `Name`, `Continent`, `Region`) VALUES (2, 'AFG', 'Afghanistan', 'Asia', 'Southern and Central Asia');
INSERT INTO `country` (`id`, `Code`, `Name`, `Continent`, `Region`) VALUES (3, 'AGO', 'Angola', 'Africa', 'Central Africa');
INSERT INTO `country` (`id`, `Code`, `Name`, `Continent`, `Region`) VALUES (4, 'AIA', 'Anguilla', 'North America', 'Caribbean');
INSERT INTO `country` (`id`, `Code`, `Name`, `Continent`, `Region`) VALUES (5, 'ALB', 'Albania', 'Europe', 'Southern Europe');

如果您有一个自动递增的主键
id
,您可以使用
UNION ALL
来选择它们

SELECT txt 
FROM (SELECT id AS pk, `code` AS txt  FROM country
UNION ALL SELECT id, `name` FROM country
UNION ALL SELECT id, Continent FROM country
UNION ALL SELECT id, Region FROM country) AS t
ORDER BY t.pk;

感谢您的回复,但此联合的返回不尊重行的顺序。我的表中没有其他主键,但我可以根据自动递增主键添加检查更新的答案。