Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.09;
Скачать: CL | DM;

Вниз

SQL Query   Найти похожие ветки 

 
Empleado ©   (2004-02-17 12:46) [0]

Все, загнался. По-мо-ги-те !
Как выбрать из БД (ID, Name) только записи с повторяющимися значениями Name, без использования Distinct, самым простым способом! :))))))))

Например:
1 Хрюша
2 Степашка
3 Филя
4 Каркуша
5 Филя
6 Степашка
7 Степашка

Результат:

2 Степашка
3 Филя
5 Филя
6 Степашка
7 Степашка


 
Danilka ©   (2004-02-17 12:47) [1]

а ШУБД какая?


 
Тимохов ©   (2004-02-17 12:49) [2]

select *
from tbl t1
where (select count (*) from tbl t2 where t2.name = t1.name) >= 2


 
Reindeer Moss Eater ©   (2004-02-17 12:51) [3]

select id, name
from mytable a
where 1 < (select count(id) from mytable where id = a.id)


 
Тимохов ©   (2004-02-17 12:52) [4]


> Reindeer Moss Eater © (17.02.04 12:51) [3]

нужно с повторяющимися name


 
Reindeer Moss Eater ©   (2004-02-17 12:53) [5]

select id,name from mytable a
where exists (select null from mytable where name = a.name and id <> a.id)


 
Reindeer Moss Eater ©   (2004-02-17 12:54) [6]

нужно с повторяющимися name

А у меня с какими?


 
Тимохов ©   (2004-02-17 12:55) [7]


>
> Reindeer Moss Eater © (17.02.04 12:54) [6]

идентификаторами


 
Тимохов ©   (2004-02-17 12:56) [8]


> Reindeer Moss Eater © (17.02.04 12:53) [5]

Никто не давал гарантию, что id уникально.


 
Danilka ©   (2004-02-17 12:56) [9]

select id, name
from mytable a
where name in (select name, count(name) from mytable group by id having count(name) > 1)


 
Тимохов ©   (2004-02-17 12:58) [10]


> (select name, count(name) from mytable group by id having
> count(name) > 1)

Интересно с каком же сервере так работать будет - с двумя полями в подселекте?


 
Danilka ©   (2004-02-17 12:58) [11]

точнее:

select id, name
from mytable a
where name in (select name from mytable group by id having count(name) > 1)


 
Danilka ©   (2004-02-17 12:59) [12]

[10] Тимохов © (17.02.04 12:58)
ошибочка вышла :))


 
Тимохов ©   (2004-02-17 12:59) [13]


> Danilka © (17.02.04 12:58) [11]

Во-во, так точнее.
только все равно не верно :))))))


 
Empleado ©   (2004-02-17 13:00) [14]

>Reindeer Moss Eater © (17.02.04 12:53) [5]
это фактически то же самое, что distinct
select distinct t1.ID, t1.Name
from MyTable AS t1, MyTable AS t2
where t1.Name = t2.Name and t1.ID<>t2.ID


 
Danilka ©   (2004-02-17 13:00) [15]

[13] Тимохов © (17.02.04 12:59)
почему?


 
Тимохов ©   (2004-02-17 13:00) [16]


> Danilka © (17.02.04 13:00) [15]

т.к. у Вас группировка идет по id.


 
Danilka ©   (2004-02-17 13:01) [17]

[16] Тимохов © (17.02.04 13:00)
точно! :))
изначально делал по id, потом увидел что надо именно по наме, переделал, а группировку забыл :))


 
Тимохов ©   (2004-02-17 13:02) [18]


> Empleado © (17.02.04 13:00) [14]

Вам 2 не подошел? Интересно, чессо слово - сам я не особо силен в SQL - интересно было бы знать свои ошибки. :)))))))))


 
Empleado ©   (2004-02-17 13:02) [19]

>Empleado © (17.02.04 13:00) [14]
сорри, вру.


 
Johnmen ©   (2004-02-17 13:03) [20]

Это конкурс на самый тяжелый запрос ? :)))
Тогда Reindeer Moss Eater © (17.02.04 12:53) [5]
безнадежно проиграл...:)


 
Guest   (2004-02-17 13:08) [21]

[18] Тимохов © (17.02.04 13:02)

По стандарту SQL следует писать
2 <= (select...).

Наоборот поддерживаться не обязано.


 
Тимохов ©   (2004-02-17 13:09) [22]


> Guest (17.02.04 13:08) [21]

Спасибо - не знал.
Знаю TSQL и все :))))0


 
Danilka ©   (2004-02-17 13:14) [23]

[20] Johnmen © (17.02.04 13:03)
действительно.
у меня его запрос выполняется 0.86с, мой 1.57с на 10к записей.


 
Guest   (2004-02-17 13:23) [24]

[22] Тимохов © (17.02.04 13:09)

T-SQL не годится для изучения ANSI SQL ИМХО. Если привыкнете использовать select from (select), например, то потом будет очень тяжело обходиться без данной конструкции.


 
Danilka ©   (2004-02-17 13:30) [25]

[24] Guest (17.02.04 13:23)
> Если привыкнете использовать select from (select), например,
> то потом будет очень тяжело обходиться без данной конструкции.

А зачем без нее обходицца? :))
Все эти фишки которые отличаются от АНСИ и добавлены во все серваки (есть-ли хоть одна СУБД на 100% соответствующая АНСИ?) добавлены для того, чтобы облегчить и ускорить, и если ими не пользовацца, то..


 
Guest   (2004-02-17 13:34) [26]

[25] Danilka © (17.02.04 13:30)

Если используется стандарт, то можно очень легко перейти на другую СУБД. Если же испольуется "нестандарт", то нет большого смысла использовать что-нибудь, кроме DAC. И все эти ADO, dbExpress, ZeosLib и так далее не имеют большого смысла. Я, конечно, понимаю, что Вы работаете с Oracle и не планируете с него уходить, но все-таки :)


 
Reindeer Moss Eater ©   (2004-02-17 13:41) [27]

Все эти фишки которые отличаются от АНСИ и добавлены во все серваки (есть-ли хоть одна СУБД на 100% соответствующая АНСИ?) добавлены для того, чтобы облегчить и ускорить, и если ими не пользовацца, то..

Скорее наоборот.
Производители добавляют фичи, отвечающие спецификациям комитета в свои реализации.
Живой пример - могучие RTRIM и LTRIM в PLSQL и их хиленький, но соответствующий ANSI брат TRIM

:)


 
Тимохов ©   (2004-02-17 13:42) [28]


> Guest (17.02.04 13:34) [26]

ИМХО TSQL ближе к стандарту чем другие. Могу и ошибаться.


 
Guest   (2004-02-17 13:43) [29]

[28] Тимохов © (17.02.04 13:42)

IB гораздо ближе ИМХО.


 
Guest   (2004-02-17 13:45) [30]

[28] Тимохов © (17.02.04 13:42)

Забыл спросить, а как Вы сравнивали?
Я работал с Informix, MS SQL, IB, немного знаком с Oracle...


 
Тимохов ©   (2004-02-17 14:23) [31]


> Guest (17.02.04 13:45) [30]

На основе мнения человека работавшего с ораклом и Informix.


 
Guest   (2004-02-17 15:20) [32]

Понятно.


 
Danilka ©   (2004-02-17 15:48) [33]

[26] Guest (17.02.04 13:34)
[27] Reindeer Moss Eater © (17.02.04 13:41)

Да я, вообще-то, имел ввиду то, что работая с любым сервером, используя только то, что есть в стандарте, на мой взгляд, не получится эффективной работы. У каждого свои особенности, своя заточка. А уж языки которыми пишутся ХП вообще у всех разные. Все это к тому - что, на мой взгляд, не надо боятся отходить от стандарта. :))


 
Guest   (2004-02-17 16:37) [34]

[33] Danilka © (17.02.04 15:48)

И Вы тоже правы :)



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

Текущий архив: 2004.03.09;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.024 c
3-25715
КомофОнСамый
2004-02-10 13:55
2004.03.09
два грида на TNotebook, как сделать with или присвоение


8-25829
Evgeniy_K
2003-11-06 19:16
2004.03.09
Отображение точки x, y, z


14-25924
RealRascal
2004-02-15 10:07
2004.03.09
пишу так


4-25970
БВВ
2004-01-02 17:44
2004.03.09
Сообщения Windows


1-25769
tararasyk
2004-02-26 15:05
2004.03.09
Рисунок в MS Word