语法错误:应为“(”或“,”或关键字 SELECT 但已结束脚本

问题描述 投票:0回答:8

我只是按照课程中的查询进行操作,但我无法弄清楚为什么会收到错误消息。

语法错误:应为“(”或“,”或关键字 SELECT 但得到了结束 [13:6] 的脚本

With 
longest_used_bike AS (
    SELECT 
        Bikeid,
        SUM(duration_minutes) AS trip_duration
    FROM 
        bigquery-public-data.austin_bikeshare.bikeshare_trips
    GROUP BY 
        Bikeid
    ORDER BY 
        Trip_duration DESC
    LIMIT 1
)

为什么会出现这个错误?

sql google-bigquery common-table-expression
8个回答
3
投票

我有同样的问题。我了解到 CTE(WITH 子句)不能作为独立的代码段工作——它是更大语句的一部分。要完成您的代码,您必须添加一个 SELECT 语句。

这是我认为会发生的事情:

  1. WITH 子句只创建临时表
  2. 您需要另一个语句来操作或查询临时表,SELECT 通常有效。
WITH longest_used_bike AS (
  SELECT
    bikeid,
    SUM(duration_minutes) AS trip_duration
  FROM `bigquery-public-data.austin_bikeshare.bikeshare_trips`
  GROUP BY bikeid
  ORDER BY trip_duration DESC
)
/* add your SELECT statement here */
SELECT *
FROM longest_used_bike;

/* or whatever else */

2
投票

你得到这个错误是因为 CTE(即

WITH
语句)只是查询的 part。它后面需要跟另一个语句,通常是
SELECT
.

也许你打算:

With longest_used_bike AS (
      SELECT Bikeid, SUM(duration_minutes) AS trip_duration
      FROM `bigquery-public-data.austin_bikeshare.bikeshare_trips`
      GROUP BY Bikeid
      ORDER BY Trip_duration DESC
      LIMIT 1
     )
select *
from longest_used_bike;

我还假设您正在使用 BigQuery。表名需要用反引号括起来。


0
投票

我在课程中也遇到了这个问题

来自课程,写在代码的形象下。 “如果你现在运行它,它会返回一个错误,因为你还没有编写任何查询。现在,是时候编写一个查询来标识这辆自行车出来的起点站了。”

要解决此问题,请添加另一个 SELECT 语句。


0
投票

我今天在课程中遇到了同样的问题。通过在末尾添加 SELECT 语句将解决此问题。在这种情况下,我们只是创建了一个临时表而没有提供任何查询来使用它,这就是我们收到此错误的原因。

您可以在此处找到有关语法的更多信息:https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax


0
投票

活动在创建临时表后有一条注释,上面写着“如果您现在运行它,它将返回一个错误,因为您还没有编写任何查询。现在,是时候编写一个查询来识别这辆自行车出来的起点站。” 您只需要继续阅读活动,您就会明白为什么会出现错误。

建议在开始活动之前先看一下活动,这样您就会知道在完成活动时会遇到什么。


0
投票

我在课程中遇到了这个问题。

在底部没有 SELECT 语句的情况下在 BigQuery 中创建临时表将导致此错误。通过在末尾添加 SELECT 语句将解决问题。

因此,只需在您创建的临时表下面添加一条语句: 从 longest_used_bike 中选择 *


0
投票
您的 WITH 语句必须与您的 SELECT 语句的列数相同。

带有第 1 列,第 2 列 作为 ( 选择列 1、列 2 等等等等 )

目前选择时只有一列和两列。


0
投票
您必须添加查询,因为您刚刚创建了一个“临时表”,它将在接下来的 60 分钟内持续很长时间,并且您在创建临时表后没有添加查询,所以这就是您收到错误的原因。

当您创建一个临时表时,将您的查询添加到临时表的正下方,不带“;”参考看这个


With longest_used_bike AS ( SELECT Bikeid, SUM(duration_minutes) AS trip_duration FROM bigquery-public-data.austin_bikeshare.bikeshare_trips GROUP BY Bikeid ORDER BY Trip_duration DESC LIMIT 1 )


--例子--

SELECT * FROM longest_used_bike;
    
© www.soinside.com 2019 - 2024. All rights reserved.