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

Posted

技术标签:

【中文标题】语法错误:应为“(”或“,”或关键字 SELECT 但脚本结束【英文标题】:Syntax error: Expected "(" or "," or keyword SELECT but got end of script 【发布时间】:2021-06-07 09:36:47 【问题描述】:

我只是按照课程中的查询进行操作,但我不知道为什么会收到错误消息。

语法错误:应为“(”或“,”或关键字 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
)

为什么会出现这个错误?

【问题讨论】:

什么是“课程”?请分享完整和准确的查询,以及您解决问题的尝试,并为您正在使用的数据库系统添加标签 您需要“使用”这个公用表表达式。所以请在 SELECT * FROMlongest_used_bike 之后添加) 您使用的是哪种 DBMS 产品? “SQL”只是所有关系数据库都使用的一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tag。 Why should I tag my DBMS 请通过编辑为您的问题添加所有说明 【参考方案1】:

您收到此错误是因为 CTE(即 WITH 语句)只是查询的一部分。它后面需要跟另一个语句,通常是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。表名需要用反引号括起来。

【讨论】:

【参考方案2】:

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

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

    WITH 子句只创建您的临时表 您需要另一个语句来操作或查询临时表,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 */

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

请添加建议的代码。【参考方案4】:

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

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

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review【参考方案5】:

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

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

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于语法错误:应为“(”或“,”或关键字 SELECT 但脚本结束的主要内容,如果未能解决你的问题,请参考以下文章

pg:select * from analyse 语法错误 在 "analyse" 或附近的 LINE 1: select * from analyse

获取 Rails 错误“语法错误,意外 tSYMBEG,需要关键字_do 或 '' 或 '('”

SQLSTATE [42000]:语法错误或访问冲突:sql select 语句中的 1064

错误:在 '.' 之前应为 `,' 或 `...'令牌

获取 PSQLException:错误:在带有 Postgres 的 spark jdbc 中使用查询而不是表名时在“SELECT”处或附近出现语法错误

从服务器检索数据到本地返回 SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT 命令拒绝用户