如何合并4个mysql表中的数据

时间:2018-11-01 15:48:19

标签: mysql excel database csv

我有4个包含数据的mysql表。每个表都有相同的列,名称和类型以及所有内容,只有数据会更改。每个表具有不同数量的记录,因为每个表代表不同的年份。因此是2015、2016、2017和2018年的表格。这些表格包含有关公司及其欠政府服务资金的数据。因此,每个表都具有几乎相同的数据,但有一些更改(某些公司已付款)。我想创建将这些表与额外的列等结合的第五张表。2015年的表具有一列用于表示拥有量,一列用于银行付款代码,与另一张表相同,我希望在第五张表中具有列对于所有支付金额的所有年份,其余的保持不变。 我该怎么做? 谢谢。

    CREATE TABLE `2015` (
  `id2015` int(11) NOT NULL AUTO_INCREMENT,
  `eponymia` varchar(200) DEFAULT NULL,
  `afm` varchar(45) DEFAULT NULL,
  `gemi` varchar(45) DEFAULT NULL,
  `nomiki_morfi` varchar(45) DEFAULT NULL,
  `status` varchar(45) DEFAULT NULL,
  `amount` varchar(45) DEFAULT NULL,
  `payment_code` varchar(45) DEFAULT NULL,
  `chamber_reg` varchar(45) DEFAULT NULL,
  `tmima` varchar(45) DEFAULT NULL,
  `dimos` varchar(45) DEFAULT NULL,
  `city` varchar(45) DEFAULT NULL,
  `street` varchar(45) DEFAULT NULL,
  `number` varchar(45) DEFAULT NULL,
  `tk` varchar(45) DEFAULT NULL,
  `phone` varchar(45) DEFAULT NULL,
  `mobile` varchar(45) DEFAULT NULL,
  `fax` varchar(45) DEFAULT NULL,
  `email` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id2015`)
) ENGINE=MyISAM AUTO_INCREMENT=7735 DEFAULT CHARSET=utf8

这是其中一个表的架构,其他表相同 而我要填写的表格的模式是这个

CREATE TABLE `all_years` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `eponymia` varchar(240) DEFAULT NULL,
  `amount_2015` varchar(40) DEFAULT NULL,
  `amount_2016` varchar(40) DEFAULT NULL,
  `amount_2017` varchar(40) DEFAULT NULL,
  `amount_2018` varchar(40) DEFAULT NULL,
  `kodikos_2015` varchar(40) DEFAULT NULL,
  `kodikos_2016` varchar(40) DEFAULT NULL,
  `kodikos_2017` varchar(40) DEFAULT NULL,
  `kodikos_2018` varchar(40) DEFAULT NULL,
  `dimos` varchar(40) DEFAULT NULL,
  `city` varchar(40) DEFAULT NULL,
  `street` varchar(40) DEFAULT NULL,
  `number` varchar(40) DEFAULT NULL,
  `tk` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `all_years_id_uindex` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1686615 DEFAULT CHARSET=utf8

我希望列“ amount_2015”和“ kodikos_2015”包含2015年表中的数据,依此类推。 这是数据的一个例子

81  "company name"  020587798   2036001000  ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000196546264229    "VAT"   Εμπορικό    ΚΥΠΑΡΙΣΣΙΑΣ / ΜΕΣΣΗΝΙΑΣ ΚΥΠΑΡΙΣΣΙΑ  ΑΡΜΕΝΙΟΙ        24500   2761024466          
82  "company name"  129915690   14689845000 ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000100549364229    "VAT"   Υπηρεσιών   ΛΕΥΚΤΡΟΥ / ΜΕΣΣΗΝΙΑΣ    ΠΥΡΓΟΣ ΛΕΥΚΤΡΟΥ         24024               
83  "company name"  302641263   14690945000 ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000212785864222    "VAT"   Επαγγελματιών   ΦΙΛΙΑΤΡΩΝ / ΜΕΣΣΗΝΙΑΣ   ΦΙΛΙΑΤΡΑ    ΚΕΝΤΡΙΚΗ ΠΛΑΤΕΙΑ        24300               
84  "company name"  800171859   14691745000 ΕΕ  Λύση - Εκκαθάριση   80.00   00200000212787664228    "VAT"   Εμπορικό    ΑΥΛΩΝΑ / ΜΕΣΣΗΝΙΑΣ  ΚΥΠΑΡΙΣΣΙΑ  1 ΧΙΛ ΚΑΛΟΥ ΝΕΡΟΥ - ΤΣΑΚΩΝΑΣ    0   24500               
85  "company name"  110084982   14692445000 ΑΤΟΜΙΚΗ Ενεργή  30.00   00200000212789664228    "VAT"   Μεταποιητικό    ΦΙΛΙΑΤΡΩΝ / ΜΕΣΣΗΝΙΑΣ   ΦΙΛΙΑΤΡΑ            24300   

我也不完全确定此网站的工作方式,因此,如果我做一些愚蠢的事情,可以给我一点时间,我会解决的。

1 个答案:

答案 0 :(得分:0)

这是address_box.post { address_box.text="my text"} 的工作。

尝试这样的事情。

UNION ALL

使用 SELECT 2015 AS year, company, owed, payment, paymentcode FROM tbl2015 UNION ALL SELECT 2014 AS year, company, owed, 0 AS payment, '' AS paymentcode FROM tbl2014 UNION ALL SELECT 2013 AS year, company, owed, 0 payment, '' paymentcode FROM tbl2013 UNION ALL时,联合中的每个结果集必须具有相同的列数。我写了UNION,将伪造的列放到表中没有伪列的联合结果集中。