включая ограничение на выбор первых n строк в группе по предложению - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть следующие 2 таблицы:

create table1
(
   SENDER int,
   RECEIVER int,
   TIME time,
   TYPE char(1)
);

create table2
(
   ID int,
   Y int,
   CONTACT int,
   DATE time
);

Я выполняю следующий запрос на соединение:

SELECT B.ID, A.RECEIVER AS Z, A.SENDER AS CONTACT, A.TYPE, A.TIME
FROM table1 A 
JOIN table2 B ON A.RECEIVER = B.CONTACT 
WHERE A.TYPE = 'A'
   AND A.TIME < B.DATE

Как изменить запрос, чтобы он возвращал только 40 лучших результатовкаждая пара (ID,CONTACT) с использованием GROUP BY?

Я могу упорядочить данные, используя поле table2.DATE

1 Ответ

0 голосов
/ 03 августа 2012

, так как я хотел получить 40 лучших результатов для каждого идентификатора, я сделал идентификатор, autoId в качестве первичного ключа, здесь autoId - ключ автоинкремента поэтому после выполнения следующего запроса: SELECT B.ID, A.RECEIVER AS Z, A.SENDER AS CONTACT, A.TYPE, A.TIME FROM table1 A JOIN table2 B ON A.RECEIVER = B.CONTACT WHERE A.TYPE = 'A' AND A.TIME < B.DATE я получаю результаты, такие, что autoId инициализируется в 1 для каждого идентификатора например:

ID CONTACT autoId
1 2 1
1 3 2
1 11 3
1 34 4
2 5 1
2 33 2
2 56 3

, поскольку autoId является автоинкрементом, для него уже есть индекс. после того, как эта таблица создана, я могу легко удалить результаты, где autoId больше 40. И этот процесс выполняется очень быстро!

...