LINUX.ORG.RU

sql query


0

0

Может быть кто подскажет каким должен быть запрос: есть таблица, например tbl, в ней есть столбцы, один например td1 надо выбрать такие строки, в которых td1 разные. т.е. допустим всего надо 10 строчек, и чтобы все они имели разыне значения этого столбца. Пока я тупо сравниваю эти значения в скрипте, и я уверен, что это огромнейшая потеря производительности.

★★★★★

SELECT DISTINCT td1 FROM tbl;

если я понял чё надо...

Pi ★★★★★
()

>Пока я тупо сравниваю эти значения в скрипте, и я уверен, что это огромнейшая потеря производительности.

distinct - тоже тупое сравнение, но сранивает сама субд - производительность побольше сем у скрипта

ваще говори конкретно чё надо, ибо скуэлом мона сделать почти всё

Pi ★★★★★
()
Ответ на: комментарий от Pi

Ок. Это то, нео видать не совсем так меня поняли :) Мне надо получить несколько строк с несколькими столбцами из таблицы, у которых столбец td1 разный. Скажем так. Есть таблица, хранящая посты юзеров. В ней есть столбец, который указывает, к какому треду относится тот или иной пост. Надо выбрать например автора и дату 10 постов, относящихся к разым тредам. Вот :)

roy ★★★★★
() автор топика
Ответ на: комментарий от roy

select author,date,thread from messages group by author,date,thread

Надеюсь, хватит способностей выдрать из всего запроса 10 первых строк? :-)

no-dashi ★★★★★
()

ДЮБЮИ ЛЕРЮДЮММШЕ,РЮЙ МЕОНМЪРМН ВЕЦН РШ УНВЕЬЭ
ЛНФЕР РЮЙ?
Select ┘.
From tbl tx
Where tx.td1 in (
Select t1.td1
From tbl t1
Group by t1.td1
Having(count(*))>1)

kirill_s
()
Ответ на: комментарий от no-dashi

Простите вообще за вопрос. Просто я это давно писал и решил 
оптимизировать, но не сразу понял, что я сам хочу =)
В итоге все оказалось сложнее немного (для меня), но я сделал. У меня есть таблица
топиков и постов, надо было выбрать последнее сообщение именно для 
каждого форума.

Вот мой запрос, если кому интересно :)

SELECT DISTINCT forumPosts.id FROM forumPosts,forumTopics WHERE forumPosts.deleted=0 && forumTopics.deleted=0 && forumPosts.topic_id=forumTopics.id && forumTopics.forum_id='$forum' ORDER BY forumPosts.date DESC LIMIT 0,1");

roy ★★★★★
() автор топика
Ответ на: комментарий от roy

> Ок. Это то, нео видать не совсем так меня поняли :) Мне надо получить несколько строк с несколькими столбцами из таблицы, у которых столбец td1 разный. Скажем так. Есть таблица, хранящая посты юзеров. В ней есть столбец, который указывает, к какому треду относится тот или иной пост. Надо выбрать например автора и дату 10 постов, относящихся к разым тредам. Вот :)

Проще двумя курсорами сделать: внешний выбирает "DISTINCT author, thread", внутренний -- первую запись с нужными атрибутами для данных автора и нитки.

Если СУБД поддерживает аналитические функции (нужна ROW_NUBMER или аналог), то можно сделать и "одним селектом", но не факт, что этот вариант получится быстрее.

amm ★★
()
Ответ на: комментарий от Pi

> ибо скуэлом мона сделать почти всё

Далеко не все.

amm ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.