2017-10-06 103 views
0

我想加入2个数据库。INNER JOIN语法错误

  • 1数据库是keyword_data(关键字映射)
  • 1数据库填充有谷歌的排名和其他指标

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

一些背景:

数据集名:知名度

表1

keyword_data

VALUES

  • 关键字
  • 宇宙
  • 类别
  • search_volume
  • CPC

数据集名:能见度

表2

RES ULTS

VALUES

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

按日期来接收排名数据我写了下面的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等线路,但没有成功;-))

我使用谷歌的BigQuery这个标准SQL(未选中传统的SQL)。

如何加入这两个数据表?

+0

您的预期结果是什么? - 提供例如 –

回答

2

你对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 
+0

我学习:-) 收到以下错误: 错误:SELECT列表表达式引用r.Position既不组合也不聚集 是否有可能有一些做的“AS”位置? – Marc

+0

似乎是一个谷歌BigQuery的东西,我不熟悉,对不起 – kero

+1

它不是特定于BigQuery。在使用GROUP BY时,SELECT列表中的每一列都需要出现在GROUP BY列表中,或者是聚合函数(如SUM,COUNT等)的结果。例如,GROUP BY日期,职位,网站等。 –

0

首先我从来没有与谷歌大查询工作,但有几件事情错在我的这个查询的意见。

首先通过包含表名称来连接表,然后提供表连接的关键字。另外,如果您不在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