-1

我最近注意到了 UNION 函数,并在 W3Schools 上看到你可以合并两个表,但我想合并三个......我已经编写了一段代码,但是它不起作用,因为我得到一个错误。是否可以合并三个表,我该如何实现?谢谢!

错误:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Legendary\new\search.php on line 54

代码:

            // Fill up array with names
            $sql2 = mysql_query("SELECT * FROM members UNION ALL SELECT * FROM clans UNION ALL SELECT * FROM tournaments"); 
            while($row=mysql_fetch_array($sql2)) {
                $a[]=$row['name'];
                $b[]=$row['id'];
            }
4

2 回答 2

4

您需要从每个表中以相同的顺序返回相同数量的列和数据类型(因为mySQL不支持 SQL 标准的UNION CORRESPONDING语法)。如果表不完全匹配,但确实有一些您想要的类似列UNION,则在SELECT子句中为UNION.

即使表模式匹配,最好指定列名;否则将来向其中一个表添加一列会破坏查询。

例如,如果所有表都有一个 Name 列,你可以这样做:

select Name from members
UNION ALL
select Name from clans
UNION ALL
select Name from tournaments
于 2012-03-05T16:18:05.737 回答
3

UNION 是一个 SQL 命令,用于将结果堆叠在其他结果之上,这就是为什么您需要相同数量的列的原因。如果您想查看某些成员参加了哪些氏族和锦标赛,那么您需要加入他们。

于 2012-03-05T16:29:57.447 回答