我有三个包含内容的表,现在我想获取它们并将其添加到新表中但是我有这个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))
请帮助我。感谢
答案 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
而言非常重要,而不是字段名称。