Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Вниз

Удаление повторяющихся полей с помощью SQL HELPPP!!!!!!   Найти похожие ветки 

 
Soft   (2002-09-20 17:35) [0]

Привет всем.

Помогите составить SQL запрос, которрый будет удалять все записи из таблицы business где в поле firm записи повторяются.

Срочно, очень нужно.

Безглючного кода и прочего всем


 
sniknik   (2002-09-20 20:05) [1]

просто не получится, обязательно нужно ключевое поле (не firm) например автоинкрементное, сдесь id, (если его добавить в Access оно само проставится у существующих записей)
запрос который копирует в новую таблицу записи с единственным значением firm
SELECT * INTO businessNew FROM business WHERE id IN (SELECT Min(id) FROM business GROUP BY firm)

на самом деле это лутший вариант чем удаление (чтобы не было потом мучительно больно :-))
но если нужно удаление замени select на delete, IN на Not In и пробуй, эксперементируй :-) но чтобы не было потом ....

и поменяй Access 97 на Access 2000 min. совет.!


 
VAleksey   (2002-09-21 08:58) [2]

Можно сделать
SELECT DISTINCT * FROM ....
потом удалить все записи в старой таблице, и результат прошлого запроса снова записать в нее.


 
sniknik   (2002-09-21 12:38) [3]

так получится ели совпадения считать по всем полям. здесь Soft конкретно указал по одному полю firm, значит остальные могут чемто отличатся.


 
susera   (2002-09-21 21:27) [4]

Один из вариантов:

delete from business b1
where b1.firm in (
select b2.firm from business b2 where 1<(
select count(b3.firm) from business b3 where b3.firm=b2.firm)
group by firm)


 
sniknik   (2002-09-22 00:16) [5]

а вот так не делай! чтобы не было потом ....
в Access-е это удалит все записи где есть повторения т.к. не по ключевому полю удаляется.
упростим запрос, например повторяются значения с 1 и 2.
delete from business b1 where b1.firm in (1,2)
все остальное нужно чтобы получить эти поля правильно? значит из таблици удалятся записи с firm=1 и firm=2 так? а надо чтобы одна осталась.

запрос будет рабочим если опять таки ключ вставить и по нему удалять.


 
susera   (2002-09-22 14:24) [6]

Не знаю как этот запрос сработает в Access, но в Interbase он работает правильно.


 
Polevi   (2002-09-22 17:35) [7]

DELETE FROM Business WHERE Firm IN (SELECT Firm FROM Business GROUP BY Firm HAVING Count(*)>1)


 
Soft   (2002-09-22 19:22) [8]

Спасибо всем за ответы.


 
Виталий Панасенко   (2002-09-23 09:03) [9]

Можно и так:
delete from Business b1 where 1<(select count(b2.firm) from Business b2 where b1.Firm=b2.Firm)


 
Johnmen   (2002-09-23 09:59) [10]

Невозможно удалить одну единственную запись, если имеется еще хотя бы одна, полностью с ней совпадающая !!!
(см. посты sniknik)


 
Alexandr   (2002-09-23 10:08) [11]

в access е есть в мастере запросов сразу готовый запрос на удаление одинаковых записей.
так что ваш спор яйца выеденного не стоит


 
Polevi   (2002-09-23 10:49) [12]

2Alexandr © (23.09.02 10:08)
а что там еще есть ?


 
CbIH   (2002-09-23 16:54) [13]

Если есть ИД, можно так:
DELETE FROM FROM business WHERE id IN(
SELECT id FROM business b1, business b2
WHERE b1.firm=b2.firm
AND b1.id<b2.id)


 
CbIH   (2002-09-23 16:55) [14]

Сорри...
SELECT b2.id, конечно...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
4-45616
Ребенок Кирилл
2002-08-28 18:09
2002.10.14
Достать выделенный текст из броузера


1-45249
Петя
2002-10-04 10:43
2002.10.14
Расшифруйте пожалуйста


1-45295
Starkom
2002-10-02 16:59
2002.10.14
объясните поведение секции finalization


3-45209
Kran
2002-09-20 20:44
2002.10.14
чтение из Excel я


1-45336
MaximatorVeter
2002-10-04 23:48
2002.10.14
Хочу поменять 2 эл-та коллекции между собой с помощью указателей.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский