SQL报错求助:SQLZOO诺贝尔文学奖查询提示'yr'列不存在
解决SQLZOO「80年代文学奖」习题的报错问题
嘿,我碰到过类似的坑,帮你分析下可能的原因和解决办法:
首先,你收到的Unknown column 'yr' in 'field list'错误,核心是数据库找不到你指定的yr列,常见的原因有这几个:
列名拼写或记忆偏差:SQLZOO的这个习题里,目标表的年份列确实是
yr,但也有可能你混淆了其他习题的列名(比如有些类似表会用year作为年份列)。你可以先运行这条语句确认表结构:SELECT * FROM world LIMIT 1;看看返回的结果里有没有
yr这个列,如果没有,就换成实际的列名(比如year)再试。表名拼写错误:你有没有把表名
world写错?比如写成word或者worlds?如果表名不对,数据库也会找不到对应的列,仔细检查下表名的拼写。大小写敏感问题:部分数据库(比如Linux环境下的MySQL)对列名大小写是敏感的,如果实际列名是
Yr或者YR,而你写的是小写yr,就会报错。这种情况下可以给列名加上反引号:SELECT `yr`, subject, winner FROM world WHERE `yr` >=1980 AND `yr` <=1989 AND subject = 'Literature';
另外,你也可以简化一下WHERE条件,用BETWEEN让代码更简洁:
SELECT yr, subject, winner FROM world WHERE yr BETWEEN 1980 AND 1989 AND subject = 'Literature';
先试试确认表结构的方法,应该能很快定位到问题!
内容的提问来源于stack exchange,提问作者elgene
相关产品推荐
相关产品推荐

