【问题标题】:INNER JOIN Syntax ErrorINNER JOIN 语法错误
【发布时间】:2017-10-06 09:56:42
【问题描述】:

我想加入 2 个数据库。

  • 1个数据库是keyword_data(关键字映射)
  • 1 个数据库充满了 Google 排名和其他指标

不知何故,我无法加入这两个数据库。

一些上下文:

数据集名称:可见性

表 1

关键字数据

价值观

  • 关键字
  • 宇宙
  • 类别
  • 搜索量
  • 每次点击费用

数据集名称:可见性

表 2

结果

价值观

  • 日期
  • 关键字
  • 网站
  • 位置

为了按日期接收排名数据,我编写了以下 SQL 行。

SELECT Date, Position, Website FROM `visibility.results` Keyword INNER
JOIN `visibility.keyword_data` keyword ON `visibility.results` Keyword
= `visibility.keyword_data` keyword GROUP BY Date;

(除此之外,还有 100 行没有成功 ;-))

我正在使用 Google BigQuery 和标准 SQL(未选中的 Legacy SQL)。

如何加入这两个数据表?

【问题讨论】:

  • 您的预期结果是什么? - 提供示例

标签: sql google-bigquery


【解决方案1】:

您对 SQL 的熟悉程度如何?我认为您使用别名错误,这样的事情应该可以工作

SELECT r.Date, r.Position, r.Website
FROM `visibility.results` AS r
INNER JOIN `visibility.keyword_data` AS k
ON r.Keyword = k.keyword
GROUP BY DATE

【讨论】:

  • 我正在学习 :-) 得到以下错误:错误:SELECT 列表表达式引用 r.Position 既不分组也不聚合是否可能与“AS”的位置有关?
  • 好像是 Google BigQuery 的东西,我不熟悉,抱歉
  • 它并非特定于 BigQuery。当您使用 GROUP BY 时,SELECT 列表中的每一列要么需要出现在 GROUP BY 列表中,要么是聚合函数(如 SUM、COUNT 等)的结果。例如,GROUP BY Date, Position, Website 会起作用。
【解决方案2】:

首先,我从未使用过 Google 大查询,但我认为此查询存在一些问题。

首先要通过包含表的名称来连接表,然后提供用于连接表的键。此外,如果您在 select 语句中不使用聚合函数(MIN/MAX 等),则还必须在 group by 子句中包含所有值。作为参考,如果您愿意使用 Microsoft SQL Server,我可以为您提供一个可行的解决方案,如果这对您有帮助的话,因为如果您引用 here,则语法非常相似。

SELECT  results.Date AS DATE, 
       ,results.Position AS POSITION
       ,results.Website AS WEBSITE
FROM visibility.dbo.keyword_data AS keyword_data  
INNER JOIN visibility.dbo.results AS results 
ON results.keyword = keyword_data.keyword
GROUP BY results.Date
        ,results.Position
        ,results.Website

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2023-02-15
    • 2018-10-08
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多