SELECT DISTINCT 似乎不适用于大查询

SELECT DISTINCT doesn't appear to work with big query

我正在过滤到第二个创建的 table,它删除了重复项。但是我发现 DISTINCT 似乎不起作用,并且我最终得到具有相同 ids 的行。我只想 select 一个独特的 ID 并扔掉所有剩余的,但这不是正在发生的事情。换句话说,我不关心其他列名。

def de_dupe_affiliates(read_table, write_table):
    query = """
    CREATE OR REPLACE TABLE `{write_table}` AS
    SELECT DISTINCT ID, BRAND, TITLE, SHORT_TITLE, PRICE, FROM `{read_table}` 
    """.format(read_table=read_table,write_table=write_table)
    response = client.query(query).result()

我也试过了

SELECT DISTINCT(ID), BRAND

但这也是一样的。是否可以在一列上使用 DISTINCT 来执行此操作?

你的select条款

SELECT DISTINCT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM `{read_table}` 

等同于

SELECT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM `{read_table}` GROUP BY ID, BRAND, TITLE, SHORT_TITLE, PRICE

表示这些字段中的任何差异 会在您的结果中创建新行。

只有当 ID、BRAND、TITLE、SHORT_TITLE、PRICE 字段是唯一的时,您的查询才有效。

如果没有,您可以使用 window 函数,例如 row_number()rank() 到 select 每个 ID 一行。

考虑以下方法

SELECT AS VALUE ANY_VALUE(t) FROM (
  SELECT ID, BRAND, TITLE, SHORT_TITLE, PRICE FROM read_table
) t 
GROUP BY ID