【发布时间】:2023-01-30 00:28:50
【问题描述】:
好的,这是我第一次使用大型数据库,这非常可怕。 这是我想要发生的一个例子:
表
table 1
ID art1 art2
1 90 20
2 20 80
3 20 20
table 2
ID art1 art2
1 20 20
2 40 30
4 20 50
期望的结果(顺序无关紧要)
table 1
ID art1 art2
1 ...
2
3
4
我有点小规模地得到它,我为此使用 LEFT JOIN,并且从我读到的内容来看,GROUP BY 至少用于属性(如果不是 ID?)。
我的问题是这些表很大。有 30 列或更多列和大约 25k 行。
那么我应该写 30 多个 GROUP BY 吗?有没有更有效的东西?喜欢 GROUP ALL?
这些表还有一个奇怪的地方。它们有大量 Null 行(在某些列中具有 attr 1),并且它们的 ID 均为 0。但是它们必须留在那里,因为出于功能原因,表必须正好有 26001 行。因此,在我完成后,我必须删除与添加的行一样多的行,但我不能在 SQL 之外这样做,而且这对我来说更快。
我的想法是否正确?到目前为止,在我发现 GROUP BY 之前,我只尝试了一个查询。我等了大约 50 万行 5 分钟,所以这并不好。我的查询是:
SELECT *
FROM `table1`
LEFT JOIN `table2`
USING (ID)
现在我想应该是
SELECT *
FROM `table1`
LEFT JOIN `table2`
USING (ID)
GROUP BY *insert all columns?*
但我不确定,我是否还必须“排列”所有列以避免重复结果?还是我必须使用 DISTINCT?再次在所有 30 多个列上?
【问题讨论】:
标签: sql join google-bigquery large-files