![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно выбрать повторяющиеся записи из таблицы??? [D5, D6, IB6.x, Firebird]
Sirus © (2003-10-22 08:29:00)
Привет Мастера... Есть вопрос: Как можно выбрать из таблицы записи у которых одно или несколько полей совпадают?
Я делаю так
select * from TABLE1 tВсе работает выборка производится ужасно долго...
where (select count(*) from TABLE1
where FIELD1=t.FIELD1)>0
Может есть другой путь???
Sirus (2003-10-22 09:50:00) [1]
2 Zacho ©
Спасибо... теперь догнал... а то покоя не давал этот вопрос... :)))
Zacho (2003-10-22 09:24:00) [2]
> Sirus © (22.10.03 09:20) [5]
Да нет, именно все записи. Так как одна запись со значением поля CODE, равном значению "текущей" записи, и с таким же RDB$DB_KEY, как и у "текущей" записи всяко существует, и это именно "текущая" запись и есть :-)
Johnmen (2003-10-22 09:23:00) [3]
>Sirus © (22.10.03 09:20)
У тебя что-то с логикой...:)
А зачем такие названия полей ?
Sirus (2003-10-22 09:20:00) [4]
Я знаю как правильно...
Просто я никак не пойму, почему если сделать t2.RDB$DB_KEY=t.RDB$DB_KEY то запрос выдает все записи...
По идее он же должен не выдавать ни одной записи...
Zacho (2003-10-22 09:14:00) [5]
> 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:08:00) [6]
Просто вопрос:
Извините, а почему данный запрос выдает все записи???
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 08:40:00) [7]
См. http://www.ibase.ru/devinfo/deldupes.htm
Danilka (2003-10-22 08:38:00) [8]
можно вот-так, например:
SELECT FIELD1, count(FIELD1)
FROM TABLE1
GROUP BY FIELD1
HAVING count(FIELD1)>1
Если есть индекс по полю FIELD1, то он будет использоваться.