处理此查询时,我不断收到错误消息。我认为最接近的结果仍然返回 ORA-00933:SQL 命令未正确结束

I keep getting errors when working on this query. The closest I think I got, still returned ORA-00933: SQL command not properly ended

我正在学习 SQL 并且无法弄清楚我的代码中做错了什么。

Select robot, city, country, count(sponsor.sponsor)
    From robot join sponsor on robot.robotid = sponsor.robotid
        Group by robotid
Where country not in ('United States');

我应该找到所有不是来自美国的机器人以及他们有多少赞助商。我已经弄清楚如何只从机器人 table 中获取国际机器人以及每个 robotID 在赞助商 table 中拥有的赞助商总数,但无法弄清楚如何加入它们。如果它有助于两个 tables 的 pk 是 robotID,但不应在查询中返回该值。

看看这个。

Select robot, city, country, count(sponsor.sponsor)
From robot join sponsor on robot.robotid = sponsor.robotid
Where country not in ('United States')
Group by robotid;

查询存在多个问题。三个很明显:

  • select 列与 group by 列不兼容。
  • where 子句放错地方了。
  • robotid有歧义

可以猜到你打算:

Select r.robot, city, country, count(*)
From robot r join
     sponsor s
     on r.robotid = s.robotid
where country not in ('United States')
group by r.robot, city, country;

这只是一个猜测。它应该可以解决语法问题,但它可能不是您想要的。为什么不?您没有解释您的问题,没有提供示例数据,也没有期望的结果。