开发者社区> 问答> 正文

SQL Server,有关“无效的列名”的基本问题

这是我的代码:

select 
    h.hacker_id, h.name,
    count(c.challenge_id) as num 
from 
    Hackers as h
join 
    challenges as c on h.hacker_id = c.hacker_id
where 
    num = max(num)
group by 
    h.hacker_id, h.name
order by 
    count(c.challenge_id) desc

我只想过滤掉其他结果,并将结果保留为最大,但是在WHERE子句中出现错误:

消息207,级别16,状态1,服务器WIN-ILO9GLLB9J0,第9行 无效的列名'num'

请帮忙

展开
收起
心有灵_夕 2019-12-22 15:25:09 1799 0
1 条回答
写回答
取消 提交回答
  • 个人对建模比较关注

    sql的执行是先执行where再执行select,则select中定义的num对于where而言是不认识的。你可以整体加一个大括号,形成临时表,然后对临时表进行num=max(num)则可以感知到了。

    2021-03-05 10:09:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载