如何从多个表中选择一些字段,同时与另一个表中的某个字段进行交叉检查。我想要来自另一个表中列出的udids的信息。
示例将清楚说明:
SELECT udid, score
FROM (TABLE_QUERY(data_one,'REGEXP_MATCH(table_id, "Data_2014_05_*")'))
WHERE udid IN (SELECT udid FROM data_two.udid_with_high_levels)
GROUP BY udid
是否可以使用“WHERE IN”执行此操作?如何?我收到以下错误: “JOIN(包括半连接)和UNION ALL(逗号)不能组合在一个SELECT语句中。将UNION ALL移动到内部查询或将JOIN移动到外部查询。”
如何用JOIN完成,因为我的第一个表来自regexp_match,语法是什么?
谢谢!
答案 0 :(得分:3)
您可以进行子选择。
对公共数据的查询显示相同的错误:
SELECT title, SUM(requests) c
FROM (TABLE_QUERY([fh-bigquery:wikipedia],'REGEXP_MATCH(table_id, "pagecounts_2014*")'))
WHERE title IN (
SELECT title
FROM [fh-bigquery:wikipedia.wikipedia_views_201308_en_top_titles_views]
GROUP BY title)
GROUP BY 1
ORDER BY 2
在表格选择中添加外部选择可解决问题:
SELECT title, SUM(requests) c
FROM (SELECT title, requests
FROM (TABLE_QUERY([fh-bigquery:wikipedia],'REGEXP_MATCH(table_id, "pagecounts_2014*")')))
WHERE title IN (
SELECT title
FROM [fh-bigquery:wikipedia.wikipedia_views_201308_en_top_titles_views]
GROUP BY title)
GROUP BY 1
ORDER BY 2