我想要合并两个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
-----------------------|------------|---------------
最好的问候。