【发布时间】:2019-03-19 17:26:57
【问题描述】:
问题
所以我收集了一些进行连接的行,我需要通过查询删除这些行。有谁知道如何形成删除查询?我知道这听起来很容易,但找不到方法。
代码
SELECT * FROM (
SELECT
entity_key, min(actual_posting_time) as min_time
FROM
myTable
WHERE
_PARTITIONTIME BETWEEN TIMESTAMP("2018-12-01") AND TIMESTAMP("2018-12-04")
GROUP BY
entity_key
HAVING
COUNT(*) >= 2
)t1
LEFT JOIN
(
SELECT entity_key, actual_posting_time
FROM
myTable
WHERE _PARTITIONTIME BETWEEN TIMESTAMP("2018-12-01") AND TIMESTAMP("2018-12-04")
) t2
ON t1.entity_key = t2.entity_key
AND min_time <> t2.actual_posting_time )
因此,我想从上面的子选择中删除 myTable 中的每条记录。任何建议都非常感谢。
【问题讨论】:
-
哪个子查询?你有两个。
-
@RyanWilson 这次加入的结果是我有兴趣删除的结果。
-
A
DELETE FROM TABLE WHERE entity_key IN (Your example query)应该这样做,除非您将最外面的查询更改为仅选择entity_key而不是* -
是的,我在 SQL-Server 中工作,所以对于 bigquery 来说,有些东西似乎不存在,我想你可以按照你说的为每条记录创建唯一的列值,我可以如果这是您的决定,请为您提供一些帮助。
-
是的合并命令确实插入、更新和删除,这非常酷。我建议你仔细检查一下。
标签: sql google-bigquery