在MySQL中将行转换为单个列(8.0.17)
我试着搜索帖子,也没有任何结果,也许我没有使用正确的词 我需要一个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
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;
感谢您的回复,但此联合的返回不尊重行的顺序。我的表中没有其他主键,但我可以根据自动递增主键添加检查更新的答案。