我有2个表的植物和天气,我需要的是天气表中唯一能在一种天气中开花的植物,并且具有植物表中的相应植物名称。
请帮助我为这种情况构造sql查询。
Plants Table :
=====
plant_name; plant_species; seed_year
Marcantia1, Bryophyte, 2012
cycas1, gymnosperm, 2013
Marcantia2, Bryophyte, 2016
weather table :
======
plant_species; weather_type
Bryophyte, sunny
gymnosperm, rainy
gymnosperm, sunny
ex:在一种类型的天气中唯一开花的天气植物物种是苔藓植物,在晴朗的天气中开花,并且在植物表中有2个记录,其中植物物种是苔藓植物,即marcantia1和marcantia2。
Required output :
=====
weather_type; plant_name
sunny, marcantia1
sunny, marcantia2
答案 0 :(得分:0)
SELECT
w.weather_type,
p.plant_name
FROM Plants p
LEFT JOIN weather w
ON w.plant_species = p.plant_species
我选择了LEFT JOIN
,这还将包括不在天气表中的植物。
答案 1 :(得分:0)
您需要使用具有count( distinct weather_type ) = 1
的Haven子句进行分组:
select max(weather_type) as weather_type, plant_name
from plants p
join weather w on w.plant_species = p.plant_species
group by plant_name
having count( distinct weather_type ) = 1;
WEATHER_TYPE PLANT_NAME
------------ -----------
sunny Marcantia1
sunny Marcantia2