2017-03-22 275 views
1

我必须要有表格,每个表格有4列(id,name,games,points)。两个表中的列名相同。我想从一张大桌子的两栏中选择一切(比如足球,你在一张桌子上加入MLS和英超联赛)。 我试过这段代码:从两张同列的表中选择

SELECT * FROM league1 JOIN league 2; 

,但它不是我想要的输出。 我可以看到我的表不会创建exatly一样:

CREATE TABLE `league1` (
`id` int(11) DEFAULT NULL, 
`Navn` varchar(50) COLLATE utf8_danish_ci NOT NULL, 
`kampe` int(11) DEFAULT NULL, 
`Point` int(11) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci ROW_FORMAT=DYNAMIC 

CREATE TABLE `league2` (
`id` int(11) DEFAULT NULL, 
`Navn` varchar(50) DEFAULT NULL, 
`kampe` int(11) DEFAULT NULL, 
`Point` int(11) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

难道就没有可能加入他们同列下,所以我仍然有4列,但两个表中的所有行?

回答

1

使用union all保留重复。而在案场的数量是不同的,你可以只声明场匹配两个表,而不是*

SELECT * FROM league1 
    UNION ALL 
    SELECT * FROM league2 
+0

如果我在mysql中编写它,它会说:#1271 - 操作的排序规则混合不正确'UNION' –

+0

看起来您的表不是那么“”相等“?更新你的问题,以显示每个联赛的创建表。但似乎你必须做一个'CAST',所以两个表都有相同的日期类型。 –

+0

也许你是对的..愚蠢的问题,但我可以找到'创建表'的地方,因为它是很久以前我创建它。 –

1

你不想加入,但团结的两个表的内容

SELECT * 
FROM league1 
UNION ALL 
SELECT * 
FROM league2;