Как я могу удалить полностью повторяющиеся строки из запроса, не имея уникального значения для него? - PullRequest
0 голосов
/ 17 апреля 2020

У меня проблема с получением информации из таблицы базы данных MS Access. Мне нужен счетчик кода, но мне не нужно учитывать дубликаты строк, а это значит, что мне нужно удалить все дубликаты строк.

Вот пример, чтобы проиллюстрировать, что мне нужно:

Code | Name 

12 | George
20  | John 
12 | George 
33 | John

Сначала мне нужно будет удалить обе строки с одинаковым кодом, а затем мне понадобится счетчик для имени остальной части Например, для табличных данных это будет ожидаемый результат:

Name | Count

John | 2

У меня уже есть запрос, который делает это для меня, но мне требуется около 1 часа, чтобы получить около 5000 строк, и мне нужно что-то более эффективное. Мой запрос:

  select name, count(*) from Table
  where name = '" + input_name + "'
    and code in (select code from Table group by code
                 having count(code) = 1)
  group by name
  order by count(name) desc;

Буду признателен за любые предложения.

1 Ответ

0 голосов
/ 17 апреля 2020

Вместо использования in я мог бы предложить отфильтровать исходный набор данных в подзапросе, например:

select u.name, count(*)
from (select t.code, t.name from yourtable t group by t.code, t.name having count(*) = 1) u
group by u.name

Здесь замените yourtable на имя вашей таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...