Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизКак можно выбрать повторяющиеся записи из таблицы??? Найти похожие ветки
← →
Sirus (2003-10-22 08:29) [0]Привет Мастера... Есть вопрос: Как можно выбрать из таблицы записи у которых одно или несколько полей совпадают?
Я делаю так
select * from TABLE1 t
Все работает выборка производится ужасно долго...
where (select count(*) from TABLE1
where FIELD1=t.FIELD1)>0
Может есть другой путь???
← →
Danilka (2003-10-22 08:38) [1]можно вот-так, например:
SELECT FIELD1, count(FIELD1)
FROM TABLE1
GROUP BY FIELD1
HAVING count(FIELD1)>1
Если есть индекс по полю FIELD1, то он будет использоваться.
← →
Zacho (2003-10-22 08:40) [2]См. http://www.ibase.ru/devinfo/deldupes.htm
← →
Sirus (2003-10-22 09:08) [3]Просто вопрос:
Извините, а почему данный запрос выдает все записи???
select * from CTL_ENTERPRISES t
where exists (select * from ctl_enterprises t2
where t2.CODE=t.CODE and t2.RDB$DB_KEY=t.rdb$db_key)
← →
Zacho (2003-10-22 09:14) [4]
> Sirus © (22.10.03 09:08) [3]
Правильно так:
select * from CTL_ENTERPRISES t
where exists (select CODE from ctl_enterprises t2
where t2.CODE=t.CODE and t2.RDB$DB_KEY != t.rdb$db_key)
← →
Sirus (2003-10-22 09:20) [5]Я знаю как правильно...
Просто я никак не пойму, почему если сделать t2.RDB$DB_KEY=t.RDB$DB_KEY то запрос выдает все записи...
По идее он же должен не выдавать ни одной записи...
← →
Johnmen (2003-10-22 09:23) [6]>Sirus © (22.10.03 09:20)
У тебя что-то с логикой...:)
А зачем такие названия полей ?
← →
Zacho (2003-10-22 09:24) [7]
> Sirus © (22.10.03 09:20) [5]
Да нет, именно все записи. Так как одна запись со значением поля CODE, равном значению "текущей" записи, и с таким же RDB$DB_KEY, как и у "текущей" записи всяко существует, и это именно "текущая" запись и есть :-)
← →
Sirus (2003-10-22 09:50) [8]2 Zacho ©
Спасибо... теперь догнал... а то покоя не давал этот вопрос... :)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c