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

Вниз

...одинаковых записей..   Найти похожие ветки 

 
_Narayan_   (2003-06-17 14:50) [0]

В таблице есть несколько одинаковых записей.
Как удалить одну из них?


 
Anatoly Podgoretsky   (2003-06-17 14:58) [1]

Как можно работать без первичного ключа.


 
Johnmen   (2003-06-17 14:59) [2]

А почему только одну ?


 
Sandman25   (2003-06-17 15:05) [3]

Скопируйте куда-нибудь с помощью Distinct (INSERT INTO copy_table SELECT DISTINCT * FROM table1), потом удалите все записи и скопируйте строку из copy_table обратно.
Но вообще-то, см.Anatoly Podgoretsky © (17.06.03 14:58),
база некорректно спроектирована, тем более на InterBase, который имеет мощные средства поддержки целостности данных.


 
Johnmen   (2003-06-17 15:13) [4]

>Sandman25 © (17.06.03 15:05)
>Скопируйте куда-нибудь с помощью Distinct (INSERT INTO
>copy_table SELECT DISTINCT * FROM table1), потом удалите все
>записи и скопируйте строку из copy_table обратно.

И что ?



 
stone   (2003-06-17 15:19) [5]


> >Sandman25 © (17.06.03 15:05)
> >Скопируйте куда-нибудь с помощью Distinct (INSERT INTO
>
> >copy_table SELECT DISTINCT * FROM table1), потом удалите
> все
> >записи и скопируйте строку из copy_table обратно.


Есть и другие варианты. Приведенный вариант подходит для работы только с небольшими объемами данных.


 
Sandman25   (2003-06-17 16:12) [6]


CREATE TABLE copy_table
( name CHAR(10),
family CHAR(23));
INSERT INTO copy_table
SELECT DISTINCT *
FROM table1
WHERE name IN ("Sasha", "Vasya", "Petya");
DELETE FROM table1
WHERE name IN ("Sasha", "Vasya", "Petya");
INSERT INTO table1
SELECT *
FROM copy_table;
DROP TABLE copy_table;

Если у нас таких повторяющихся строк не пару наборов, а много, то
CREATE TABLE copy_table
( name CHAR(10),
family CHAR(23));
INSERT INTO copy_table
SELECT DISTINCT *
FROM table1;
DELETE FROM table1;
INSERT INTO table1
SELECT *
FROM copy_table;
DROP TABLE copy_table;

Если у нас таких повторяющихся строк не много, а очень много, то
CREATE TABLE copy_table
( cnt INT,
name CHAR(10),
family CHAR(23));
INSERT INTO copy_table
SELECT COUNT(*),*
FROM table1
GROUP BY 2,3
HAVING COUNT(*) > 1;
DELETE FROM table1
WHERE EXISTS
(SELECT *
FROM copy_table
WHERE table1.name = name
AND table1.family = family
);

INSERT INTO table1
SELECT *
FROM copy_table;
DROP TABLE copy_table;



 
Romkin   (2003-06-17 16:14) [7]

Короче:
http://www.ibase.ru/devinfo/deldupes.htm


 
Sandman25   (2003-06-17 16:19) [8]

>Есть и другие варианты

Другие варианты задействуют идентификаторы строки (RowId в Informix, в IB должен быть аналог).


 
Johnmen   (2003-06-17 16:31) [9]

>Sandman25 © & ALL

Ну, уважаемые ! В вопросе же четко сказано, что удалить одну, а не все дубликаты !!!


 
Sandman25   (2003-06-17 16:59) [10]

Johnmen © (17.06.03 16:31)

Я невнимательно прочел :( ибо смысла сие не имеет.
Тогда только через RDB$DB_KEY


 
Johnmen   (2003-06-17 17:44) [11]

>Sandman25 © (17.06.03 16:59)
>ибо смысла сие не имеет.

Вот и я про то же...:)


 
_Narayan_   (2003-06-17 23:25) [12]

Спасибо, Romkin.

..остальные как обычно..



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

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

Наверх





Память: 0.46 MB
Время: 0.007 c
1-31277
Rawman
2003-06-26 13:10
2003.07.10
Динамический массив компонентов


14-31481
Anonymous
2003-06-23 18:58
2003.07.10
TLameCoder & TCDRIP


14-31428
DOR
2003-06-23 10:08
2003.07.10
Здравствуйте знатоки.Какие компаненты есть для ShareWare программ


1-31249
Igorek
2003-06-29 16:11
2003.07.10
Проблема с окном наследником TDesignWindow


14-31478
Администратор
2003-06-23 15:11
2003.07.10
Зацени! http://delphi.ma.cx





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский