从三个不同的表中获取数据并将其插入新表中

时间:2017-04-03 18:55:38

标签: mysql

我有三个包含内容的表,现在我想获取它们并将其添加到新表中但是我有这个SQL错误"列数与第1行和第34行的值计数不匹配;

这是sql查询。

insert into compare_year(yeara,yearb,yearc,data)
SELECT yeara
FROM table_1
UNION ALL
SELECT yearb, data
FROM table_2
UNION ALL
SELECT yearc
FROM table_3

下面是我创建表格的方式

create table table_1(id int primary key auto_increment,yeara varchar(100));
create table table_2(id int primary key auto_increment,yearb varchar(100),data varchar(100));

create table table_3(id int primary key auto_increment,yearc varchar(100));

我的新表现在是

create table compare_year(id int primary key auto_increment,yeara varchar(100),yearb varchar(100),yearc varchar(100),data varchar(100))
请帮助我。感谢

2 个答案:

答案 0 :(得分:0)

注意:联合选择查询时,列数应相等。 而且你也不能将多个选择列插入另一行中。

我的解决方案就像:

如果三个表包含相同的id,那么你可以这样做

插入compare_year(yeara,yearb,yearc,data) 选择T1.yeara,T2.yearb,T3.yearc,T2.data FROM table_1 T1 在T2上加入table_2 T2.Id = T1.Id left在T3.Id = T2.Id

上加入table_3 T3

答案 1 :(得分:0)

看起来你想要的是<?php $songs = simplexml_load_file('playlist.xml'); foreach($songs->item as $song){ $id = $song->songid; $title = $song->songtitle; $artist = $song->artist; $genre = $song->genre; $link = $song->link; $releaseYear = $song->releaseyear; echo "<p><span>$id</span><span>$title</span></p>\n"; echo "hello"; } ?> 而不是JOIN。合并两个select语句时,它们必须在UNION中具有相同数量的字段。例如,

SELECT

在语法上是可以接受的。如果你想加入表格,

insert into compare_year(yeara)
SELECT yeara
FROM table_1
UNION ALL
SELECT yearb AS yeara
FROM table_2
UNION ALL
SELECT yearc AS yeara
FROM table_3

但请注意,这是表的完整笛卡尔积。在INSERT INTO compare_year(yeara, yearb, yearc, data) SELECT table_1.yeara, table_2.yearb, table_3.yearc, table_2.data FROM table_1, table_2, table_3 子句中,您可能也需要一些条件。值得注意的是,选择原因的顺序对WHERE而言非常重要,而不是字段名称。