Ограничить количество строк для присоединения, в MySQL - PullRequest
5 голосов
/ 11 февраля 2010

Итак, я хочу объединить две таблицы вместе, но для каждой строки в первой таблице я хочу присоединить ее только к 8-м верхним соответствующим строкам в другой таблице, упорядоченным по одному из столбцов в этой таблице. Любой умный синтаксис, который я могу использовать, или мне нужно запутаться в подзапросах?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2010

Посмотрите на

Как выбрать первую / наименьшую / максимальную строку для группы в SQL

Раздел Выберите первые N строк из каждой группы

Это немного сложнее решать. Нахождение одной строки от каждого группа легко с агрегатом SQL функции (MIN (), MAX () и т. д.). Нахождение первых нескольких от каждого группа не возможна с этим методом потому что агрегатные функции только вернуть единственное значение. Тем не менее, это можно сделать.

0 голосов
/ 11 февраля 2010

Возможно, это не лучшее решение, но, скажем, вы присоединяетесь к ID, вы можете использовать подзапрос в предложении where.

select from table1 where id in (select top 8 id from table2 order by column1 desc)
...