首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hackerrank问题的SQL语法错误-Ollivander的库存

Hackerrank问题的SQL语法错误-Ollivander的库存
EN

Stack Overflow用户
提问于 2017-02-20 16:17:05
回答 1查看 3K关注 0票数 0

我正在努力完成这里详述的挑战:https://www.hackerrank.com/challenges/harry-potter-and-wands

并且已经想出了这个解决方案,但是我得到了一个语法错误消息,或者我希望得到的结果。我的代码:

代码语言:javascript
运行
复制
With
  m As (Select
  w.power,
  wp.age,
  Min(w.coins_needed) As min_coins
From
  wands w Join
  wands_property wp
    On wp.code = w.code
Where
  wp.is_evil = 0
Group By
  w.power, wp.age)
Select
w.id,
wp.age,
w.coins_needed,
w.power
From
wands w Join
wands_property wp
On wp.code = w.code
Join m
On m.power = w.power And m.age = wp.age And m.min_coins =
w.coins_needed
Where
wp.is_evil = 0
Order By
w.power Desc,
wp.age Desc,
w.coins_needed Desc

来自hackerrank的错误消息:

代码语言:javascript
运行
复制
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'm As (Select
  w.power,
  wp.age,
  Min(w.coins_needed) As min_coins' at line 2

我看不出有什么不对劲。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-20 16:22:54

在mysql中,应该使用select ( select .)而不是和

例如

代码语言:javascript
运行
复制
select * from  (Select
  w.power,
  wp.age,
  Min(w.coins_needed) As min_coins
From
  wands w Join
  wands_property wp
    On wp.code = w.code
Where
  wp.is_evil = 0
Group By
  w.power, wp.age) t
 ......

查看您的代码:

代码语言:javascript
运行
复制
Select w.id, wp.age, w.coins_needed, w.power 
From (Select w.power, wp.age, Min(w.coins_needed) As min_coins 
    From wands w Join wands_property wp On wp.code = w.code 
    Where wp.is_evil = 0 Group By w.power, wp.age) m 
Join wands_property wp On wp.code = w.code 
Join m On m.age = wp.age 
And m.power = w.power 
And m.min_coins = w.coins_needed 
Where wp.is_evil = 0 
Order By w.power Desc, wp.age Desc, w.coins_needed Desc

您的查询必须重新考虑,因为至少您有以下问题

  1. 您没有表w,因为您使用了相关的选择命名m,因此结果表可能是
  2. 您指的是w.id,但查询中没有w表。
  3. 您正在选择一个min_coins,但是在主select中没有这个列,所以where/and子句不可用
  4. w.code列不可用(w表不存在,至少不存在m表,但无论如何不要保留代码列)

因此,您应该从第一部分(子选择in from ()子句)开始重新构建您的查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42349414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档