【发布时间】:2017-11-29 09:41:57
【问题描述】:
我有两个要合并的 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
-----------------------|------------|---------------
最好的问候。
【问题讨论】: