Я пытаюсь удалить все записи, кроме одной, из таблицы, где поле имени повторяет одно и то же значение более 5 раз, а поле адреса повторяется более пяти раз для таблицы.Так что, если есть 5 записей с полями имени и поля адреса, которые одинаковы для всех 5, то я хотел бы удалить 4 из 5. Например:
id name address
1 john 6440
2 john 6440
3 john 6440
4 john 6440
5 john 6440
Я бы хотел только вернуть1 запись из 5 записей выше.
У меня все еще есть проблемы с этим.
1) Я создаю таблицу под названием KeepThese и присваиваю ей идентификатор первичного ключа.2) Я создаю запрос с именем delete_1 и копирую его в него:
INSERT INTO KeepThese
SELECT ID FROM
(
SELECT Min(ID) AS ID
FROM Print_Ready
GROUP BY names_1, addresses
HAVING COUNT(*) >=5
UNION ALL
SELECT ID FROM Print_Ready as P
INNER JOIN
(SELECT Names_1, addresses
FROM Print_ready
GROUP BY Names_1, addresses
HAVING COUNT(*) < 5) as ThoseLessThan5
ON ThoseLessThan5.Names_1 = P.Names_1
AND ThoseLessThan5.addresses = P.addresses
)
3) Я создаю запрос с именем delete_2 и копирую его в него:
DELETE P.* FROM Print_Ready as P
LEFT JOIN KeepThese as K
ON K.ID = P.ID
WHERE K.ID IS NULL
4) Затем язапустите delete_1.Я получаю сообщение «круговая ссылка, вызванная идентификатором псевдонима». Поэтому я изменяю эту часть: FROM (SELECT Min (ID) AS ID), чтобы сказать следующее: FROM (SELECT Min (ID) AS ID2. Затем я снова дважды щелкаю и всплывающее окноотображается сообщение «Введите значение параметра для идентификатора». Это означает, что он не знает, что такое идентификатор, но print_ready - это всего лишь запрос, и хотя он имеет идентификатор, в действительности это идентификатор другой таблицы, которая была отфильтрована в этом запросе.
Не уверен, что делать в этот момент.