规格:
植物学家在两个表格中维护有关植物及其最喜欢的天气状况的数据:
植物和天气。编写查询以打印每个的名称和天气类型
仅在一种天气中开花的植物。输出顺序无关紧要。
模式格式:
PLANT(NAME,SPECIES,SEED_DATE)
WEATHER(PLANT_SPECIES,TYPE)
属性说明:
名称:
(String) Description of the plant.
种类:
(String) The species of the plant.
植物种类:
(String) The species of the plant.
类型:
(String) The type of weather in which the plant will bloom.
种子日期:
(Date) The date the seed was planted.
输出格式:
结果应包含开花的每种植物的名称和天气类型
示例中仅显示以下格式的一种天气。
给定输入和输出的说明:
苔藓植物仅在晴天时才会开花。因此结果包含
名为Marchantia1和Marchantia2的植物,其物种为苔藓植物。
在晴朗多雨的天气里,植物种类裸子植物会盛开。所以结果不
包含任何种类为裸子植物的植物名称。
(请注意,天气表可能有重复的条目)
注意:不,这不是作业! -_-这是面试中的一个问题(已结束)。我真的很想解决这个问题。但是可能有很多测试用例,我的简单sql查询无法解决。所以我需要你的帮助我是SQL查询的新手。
最佳答案
只需定期加入以获取植物名称及其天气类型。
要仅列出仅在一种气候下发生的植物,请在where
子句中列出
子查询以排除不需要显示的物种。
select distinct plt.NAME, wht.TYPE
from PLANT plt
join WEATHER wht on wht.PLANT_SPECIES = plt.SPECIES
where 1 = (select count(distinct(wht0.TYPE)) from
WEATHER wht0
where wht0.PLANT_SPECIES = plt.SPECIES)
该解决方案将(通常)适用于任何DBMS,例如,如果使用TSQL而不是MySQL,则可以利用RANK,CTE,ROWNUMBER等更复杂的工具
SQL Fiddle
关于mysql - 如何解决这个特定的数据库SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47555789/