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