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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.008 c
7-25950
YuRock
2003-12-19 14:47
2004.03.09
Программы для работы с измерителем VEEDER-ROOT


4-25974
Gnom
2004-01-03 17:20
2004.03.09
как узнать hwnd свое проги(когда ее запускаеш) ?


4-25968
Igit
2004-01-03 22:08
2004.03.09
Debug API в XP


14-25885
Andryk
2004-02-12 11:45
2004.03.09
Давайте еще раз пообсуждаем наш закон об ОСАГО


6-25851
AndreySoft
2003-11-12 22:20
2004.03.09
Как отправить сообщение на ICQ номер





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