在左外连接上获取包含计数的重复行(不同...)

时间:2015-05-13 08:09:28

标签: google-bigquery

以下查询返回大查询上的重复行。 期望得到一行值“1”:

SELECT *
FROM (
SELECT 1 AS line
FROM [...]
) AS a
left outer JOIN EACH (
SELECT 1 AS line
FROM [...] 
) AS b
ON a.line = b.line

查询结果2015年5月13日上午11:36

行a_line b_line
1 1 1
2 1 1
3 1 1
4 1 1
5 1 1
第一和LT;上一页第1-5页,共1225页下一页>最后一页

2 个答案:

答案 0 :(得分:2)

这是正确的行为。对于表a中的每一行,您得到一个'1'。对于表b中的每一行,您将得到另一行'1'。将它们连接到该键上将为您提供#rows(a)*#rows(b)'1 1'。你实际上是在两个表之间进行CROSS JOIN。

SELECT COUNT(*) FROM (
  SELECT 1 as x FROM [fh-bigquery:geocode.numbers_255]
)
256


SELECT COUNT(*) FROM (
  SELECT 1 as x FROM [fh-bigquery:geocode.numbers_255] a   
  CROSS JOIN (
    SELECT 1 as x FROM [fh-bigquery:geocode.numbers_255]) b
)
65536

如果你只想要1'1':

SELECT 1 as line

答案 1 :(得分:0)

由于Google中的旧版本,这是一个BQ错误。如果遇到此问题请求BQ支持更新您的版本。 感谢您的回复:)