Лучше всего попробовать это в другой базе данных, чем Access, и вы увидите в этом ответе почему. Но вы просили доступа, так что здесь идет:
Таким образом, мы имеем эту таблицу, которая содержит мистер Дент и г-жу Макмиллан дважды:
CREATE TABLE work (
division INT
, fips_county_code VARCHAR(3)
, last VARCHAR(10)
, suffix VARCHAR(3)
, first VARCHAR(6)
, title VARCHAR(16)
, birthdate DATE
);
INSERT INTO work VALUES(1,'UK' ,'Dent' ,'','Arthur','Earthling' ,'1957-08-02');
INSERT INTO work VALUES(1,'UK' ,'Prefect' ,'','Ford' ,'HH Guide Scout' ,'1925-04-01');
INSERT INTO work VALUES(1,'N/A','Beeblebrox','','Zaphod','Galaxy President','1857-09-13');
INSERT INTO work VALUES(1,'UK' ,'McMillan' ,'','Tricia','Astrophysicist' ,'1959-09-29');
INSERT INTO work VALUES(1,'UK' ,'Dent' ,'','Arthur','Earthling' ,'1957-08-02');
INSERT INTO work VALUES(1,'UK' ,'McMillan' ,'','Tricia','Astrophysicist' ,'1959-09-29');
Я полагаю, вы не хотите, чтобы удалить оба вхождения каждого Mr Дент или г-жа Макмиллан, но сохраните одну из копий.
Независимо от базы данных, вы не сможете просто удалить только одну из двух одинаковых строк. (странно, что у вас должен быть первичный ключ, хотя у вас никогда не будет двух одинаковых строк с рабочим первичным ключом).
В лучшей базе данных, вы бы:
ALTER TABLE work RENAME TO work_with_dups;
CREATE TABLE work AS SELECT DISTINCT * FROM work_with_dups;
DROP TABLE work_with_dups;
Но вы застряли с Access. Я предлагаю вам попытаться как можно больше подражать вышеизложенному с ограниченными возможностями, которые у вас есть.
Невозможно переименовать, и нет CREATE TABLE ... AS SELECT возможно. Итак, давайте создадим новую таблицу с идентичной структурой, как и первый, и заполнить его со всеми work
стола:
CREATE TABLE work_with_dups(
division INT
, fips_county_code VARCHAR(3)
, last VARCHAR(10)
, suffix VARCHAR(3)
, first VARCHAR(6)
, title VARCHAR(16)
, birthdate DATE
);
INSERT INTO work_with_dups SELECT * FROM work;
Теперь мы очистить исходную таблицу ...
DELETE FROM work;
И мы наполняем он с де-обманутого содержанием ранее сохраненной work_with_dups
:
INSERT INTO work SELECT DISTINCT * FROM work_with_dups;
И, наконец, мы убираем наш беспорядок:
DROP TABLE work_with_dups;
Неуклюжий, но он работает ...
Marco здравомыслящий
Что вы пробовали до сих пор, и какие ошибки вы получили? Кроме того, было бы намного легче, если бы мы знали, как выглядела таблица, и если есть какие-либо FKC, о которых нужно знать и т. Д. –
планируете ли вы удалить все возвращенные записи или вы хотите оставить один из двух дубликатов? – Stephen
@LudvigRydahl Я попытался создать подзапрос DELETE. Поэтому у меня его больше нет, потому что это не сработало. Это просто удалялось по результатам databasename (subquery). – rohanharrison