Удалить откуда существует - ошибка - PullRequest
0 голосов
/ 23 января 2019

Приведенный ниже запрос выберет и отобразит все дубликаты в одной из моих таблиц.

SELECT KeyReport, Analytics, Description, AsOfDate, COUNT(*) as CNT
FROM  `corp-analytics.Reports.Metrics`
GROUP BY KeyReport, Analytics, Description, AsOfDate
HAVING COUNT(*) > 1 AND AsOfDate IN('01-03-2019','01-17-2019')

Итак, если я использую это как подзапрос в запросе ниже ....

Delete
From Table 
Where Exists (sub-query) 

Я ожидал бы, что он удалит все дубликаты, но вместо этого я получаю это сообщение:

Cannot set destination table in jobs with DML statements 

Итак, мой вопрос: почему запрос ниже не удаляет дубликаты?

Delete
From `corp-analytics.Reports.Metrics`
Where Exists (SELECT KeyReport, Analytics, Description, AsOfDate, COUNT(*) as CNT
FROM  `corp-analytics.Reports.Metrics`
GROUP BY KeyReport, Analytics, Description, AsOfDate
HAVING COUNT(*) > 1 AND AsOfDate IN('01-03-2019','01-17-2019'))

У меня нет уникальных идентификаторов в этой таблице.

1 Ответ

0 голосов
/ 24 января 2019

Вы пробовали это?Ваше предложение HAVING фильтрует по количеству (*).Вы не найдете дубликаты после того, как вы уже сделали группировку.

Delete
From `corp-analytics.Reports.Metrics`
Where Exists (SELECT KeyReport, Analytics, Description, AsOfDate, COUNT(*) as CNT
FROM  `corp-analytics.Reports.Metrics`
GROUP BY KeyReport, Analytics, Description, AsOfDate
HAVING CNT > 1 AND AsOfDate IN('01-03-2019','01-17-2019'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...