Форум: "Потрепаться";
Текущий архив: 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.007 c