UNION查询未返回额外的列

时间:2017-11-29 09:41:58

标签: mysql join union

我想要合并两个SQL查询,但遗憾的是,我不是MYSQL的知识用户。

现在这是我的问题:

SELECT animal.species, count(animal.species) as f
FROM disp, animaldesc, animal 
WHERE disp.disp_id = animaldesc.disp_id 
AND animaldesc.authored = 1 
AND animaldesc.animal_id = animal.id 
GROUP BY animal.species 
union
SELECT animal.species, count(animal.species) as f_specific
FROM disp, animaldesc, animal 
WHERE disp.disp_id = animaldesc.disp_id 
AND animaldesc.authored = 1 
AND animaldesc.animal_id = animal.id 
AND disp.language = "en_gb" 
GROUP BY animal.species 
ORDER BY f DESC

此查询返回的数据如下:

-----------------------|--------------------
species                | f
-----------------------|--------------------
M_A_1789               | 5
-----------------------|--------------------
M_A_1789               | 1
-----------------------|--------------------
M_A_1731               | 5
-----------------------|--------------------
M_A_1731               | 1

虽然我得到了我想要的所有数据但结构是错误的。我认为这与使用UNION而不是进行JOIN有关。但我不确定使用哪种类型的JOIN(我猜对了外)因为f_specific可以返回比f更少的行。

除了使用UNION方法之外,我无法找到合并两个查询的明确解释?如何使用JOIN关键字,以便我的查询返回:

-----------------------|------------|---------------
species                | f          | f_specific
-----------------------|------------|---------------
M_A_1789               | 5          |     1
-----------------------|------------|---------------
M_A_1731               | 5          |     1
-----------------------|------------|---------------

最好的问候。

0 个答案:

没有答案