2013-11-26 129 views
0

我一直在试图从两个表中同时选择所有内容。从两个表中选择所有行

不幸的是,我没有创建数据库,我不能将它合并到一个表中。

我尝试这样做,但它不工作: (SELECT * FROM 'contacts') UNION (SELECT * FROM 'signup')

两个表是相同的。这不,虽然工作:(

+0

它为什么不起作用?它是否给出了一个错误,说您在两个查询中都没有选择相同数量的字段? – Linger

+0

向我们展示表结构以查看可能缺少的内容。不要忘记添加列数据类型。 –

+3

永远不要在'UNION'查询中选择*'。即使你相信它们是相同的,也要明确每个“SELECT”列表中列的顺序。 –

回答

1

你就不能这样做:

SELECT * FROM contacts, signup; 

还是我不理解你的问题

编辑:

相反,如果你试试这个”重新寻找联盟:

SELECT * FROM contacts 
UNION 
SELECT * FROM signup; 
+0

啊哈!这有效,但我得到每一行的重复。 –

+0

不,这是一个不同的输出。这导致了一个笛卡尔积 - 所有的'contacts'行都乘以'signup'的所有行。 –

+0

@Neurofluxation不要使用它,因为它不是连接两个表的正确方法。即使您添加了“DISTINCT”来重复删除行,这是一个连接查询,而不是您显然要查找的联盟。 –

1

您的语法不正确。表不应该用撇号引用。他们可以(但不一定是)反引号引用。

SELECT columns FROM contacts UNION SELECT columns FROM signup 

columns替换为您要选择的列。另请注意,这将首先选择全部行中的contacts行,然后再选择signup行。