下面是在bigquery中有一个表的情况,如下所示。
在表中,我们有记录1和3,它们具有相同的id,但名字不同(比如id为1的人更改了他的名字),所有其他字段在这两个记录(1和3)中都是相同的,现在我需要从这两个记录中选择一个记录如何才能做到这一点。我尝试了self-join,但这是丢弃两个记录,group\u by将不起作用,因为记录不重复,只有id与distinct相同。
谢谢!!!!
我现在使用的查询是
select * from table t group by 1,2,3,4,5;
下面是在bigquery中有一个表的情况,如下所示。
在表中,我们有记录1和3,它们具有相同的id,但名字不同(比如id为1的人更改了他的名字),所有其他字段在这两个记录(1和3)中都是相同的,现在我需要从这两个记录中选择一个记录如何才能做到这一点。我尝试了self-join,但这是丢弃两个记录,group\u by将不起作用,因为记录不重复,只有id与distinct相同。
谢谢!!!!
我现在使用的查询是
select * from table t group by 1,2,3,4,5;
2条答案
按热度按时间z4iuyo4d1#
您可以使用row\ u number函数为表中的每条记录指定行号。
行号不需要order by子句。返回每个有序分区的每一行的顺序行序号(基于1)。如果orderby子句未指定,则结果是不确定的。如果您有记录创建日期或修改日期,则可以使用ORDERBY子句中的日期来获取最新的记录。
7hiiyaii2#
sql表表示无序集。除非有指定排序的列,否则没有第一行。我假设你有这样一个专栏。
如果需要特定的行,可以将聚合与
order by
:select array_agg(t limit 1)[ordinal(1)].*
from t
group by id;