嗨,大家好我用一张名为诺贝尔的表(yr,subject)专栏来解决这个问题
这个问题的答案如下 选择显示没有给予医学奖励的年数的代码
SELECT COUNT(DISTINCT yr) FROM nobel
WHERE yr NOT IN (SELECT DISTINCT yr FROM nobel WHERE subject = 'Medicine')
然而,我的问题是,如果每年都给药,这意味着我们的查询
SELECT COUNT(DISTINCT yr) FROM nobel WHERE yr NOT IN(....)
会从空表中选择,然后不是返回0,而是会出错,那么如何处理这种情况呢?
非常感谢!
答案 0 :(得分:0)
您可以使用mys {的IFNULL()
。
SELECT IFNULL(COUNT(DISTINCT yr), 0) FROM nobel WHERE yr NOT IN(....)
答案 1 :(得分:0)
如果在过滤条件中使用了主题列,则可以按如下方式获取计数列。
SELECT count(yr)FROM nobel WHERE subject<> '药'。
您可以运行上述查询来获取年份数。
答案 2 :(得分:0)
假设每年至少有一个奖项(即每年都有一个奖项):
select distinct n.yr, (select count(*) from nobel n1 where n1.subject = 'Medicine' and n1.yr = n.yr) cnt
from nobel n