【发布时间】:2023-03-11 08:25:02
【问题描述】:
我想显示逐年重新排列的数据,其中一种可能的解决方案是使用视图并从中进行选择。数据矩阵类似于(当然它是一个虚构的演示数据集):
USA 2005 22 156
CAN 2005 14 101
MEX 2005 5 32
USA 2006 24 160
CAN 2006 16 103
USA 2007 26 163
MEX 2007 8 35
创建和填充表的 SQL 代码是:
DROP TABLE IF EXISTS `tab1`;<br>
CREATE TABLE `tab1` ( <br>
`id1` int(4) unsigned NOT NULL AUTO_INCREMENT,
`iso3` char(3) NOT NULL,
`year` int(4) unsigned NOT NULL,
`aaa` int(10) DEFAULT NULL,
`bbb` int(10) DEFAULT NULL,
PRIMARY KEY (`id1`)
)
INSERT INTO `tab1` VALUES
('1', 'USA', '2005', '22', '156'),
('2', 'CAN', '2005', '14', '101'),
('3', 'MEX', '2005', '5', '32'),
('4', 'USA', '2006', '24', '160'),
('5', 'CAN', '2006', '16', '103'),
('6', 'USA', '2007', '26', '163'),
('7', 'MEX', '2007', '8', '35');
COMMIT;
现在我想为参数“aaa”获取一个像这样的 2D 表:
country 2005 2006 2007
USA 22 24 26
CAN 14 16
MEX 5 8
但是下面的 SQL 代码省略了所有缺少数据的行,无论是一个值,我只得到一行
USA 22 24 26
SQL代码是:
SELECT view2005.Country, view2005.2005, view2006.2006, view2007.2007
FROM view2005, view2006, view2007
WHERE view2005.country = view2006.country
AND view2005.country = view2007.country
知道如何做到这一点,包括缺少数据的行吗?提前致谢。
【问题讨论】:
标签: mysql select view multidimensional-array