Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何选择具有实际分组项目的组_Mysql_Google Bigquery - Fatal编程技术网

Mysql 如何选择具有实际分组项目的组

Mysql 如何选择具有实际分组项目的组,mysql,google-bigquery,Mysql,Google Bigquery,我有一张桌子是这样设置的: doc product a 2 a 1 a 1 b 1 c 3 c 2 d 1 我需要选择与订购产品1共享相同文档id的所有项目,但不实际分组文档中的所有项目 所以最终结果应该是这样的: doc product a 2 a 1 a 1 b 1 d 1 有没有一种方法可以实现这种类型的选择?有什么原因不想在这里使用普通联接或子查询 如下所示: Select * from table where doc in ( s

我有一张桌子是这样设置的:

doc product
a   2
a   1
a   1
b   1
c   3
c   2
d   1
我需要选择与订购产品1共享相同文档id的所有项目,但不实际分组文档中的所有项目

所以最终结果应该是这样的:

doc product
a   2
a   1
a   1
b   1
d   1

有没有一种方法可以实现这种类型的选择?

有什么原因不想在这里使用普通联接或子查询

如下所示:

Select * from table where doc in (
  select doc from table where product = 1
) t1 ;

有什么原因不想在这里使用普通联接或子查询吗

如下所示:

Select * from table where doc in (
  select doc from table where product = 1
) t1 ;
子查询查找订购产品1的所有单据。然后,主查询将查找包含这些文档的所有行

需要使用
DISTINCT
,以防止子查询返回
doc
的次数重复所有行

如果表很大,我推荐第二种方法,因为MySQL在
WHERE xxx IN(子查询)
查询中存在一些臭名昭著的性能问题

子查询查找订购产品1的所有单据。然后,主查询将查找包含这些文档的所有行

需要使用
DISTINCT
,以防止子查询返回
doc
的次数重复所有行


如果表很大,我建议使用第二种方法,因为MySQL在
中有一些臭名昭著的性能问题,其中xxx位于(子查询)
查询中。

下面是针对BigQuery标准SQL的

#standardSQL
SELECT *
FROM `project.dataset.table`
WHERE doc IN (SELECT DISTINCT doc FROM `project.dataset.table` WHERE product = 1)  
和纯BigQuery特定选项(用于娱乐和学习):


下面是BigQuery标准SQL

#standardSQL
SELECT *
FROM `project.dataset.table`
WHERE doc IN (SELECT DISTINCT doc FROM `project.dataset.table` WHERE product = 1)  
和纯BigQuery特定选项(用于娱乐和学习):


上次我被否决是很久以前的事了。我想知道上次我被否决的投票是很久以前的事了。想知道这次被否决的投票是怎么回事
#standardSQL
SELECT doc, product 
FROM (
  SELECT doc, ARRAY_AGG(product) arr
  FROM `project.dataset.table`
  GROUP BY doc
  HAVING 1 IN UNNEST(arr)
) t, t.arr product