MySQL выбирает n строк в диапазоне - PullRequest
0 голосов
/ 02 января 2012

Скажем, у меня есть таблица, которая выглядит следующим образом:

ID| Value
1 | 98
2 | 56
3 | 37
4 | 100
5 | 96
6 | 23

... и я хочу выбрать только четыре строки.Однако строки должны быть репрезентативными для набора (он будет отображаться в виде линейного графика), и поэтому я хочу, в этом случае, что-то вроде этого:

ID| Value
1 | 98
2 | 56
4 | 100
6 | 23

Т.е., диапазонмаксимум n (в данном случае четыре) результатов, включая минимальный и максимальный, с каждым результатом, «как можно более отдаленным» от остальных.

Это то, что я слишком много просил для MySQL, иЕсли да, то какие другие средства вы бы порекомендовали?Я бы очень хотел избежать выбора каждой отдельной строки, а затем отфильтровать некоторые из них с помощью PHP.

Большое спасибо

Fela

1 Ответ

0 голосов
/ 02 января 2012

Это возможно, но вы не хотите этого делать.

Вы можете вытащить минимум (SELECT MIN()) и максимум (SELECT MAX()), вы можете определить, сколько результатов в наборе (SELECT COUNT()). С помощью счетчика вы можете выбрать конкретные строки в наборе результатов (SELECT ... LIMIT 2,1). И тогда вы могли бы UNION все это вместе. Но это будет довольно ужасный оператор SQL, и он действительно, действительно, не тот, для которого вы хотите использовать SQL.

Гораздо лучше, если вы извлечете все результаты, о которых идет речь, возможно, упорядочены соответствующим образом, и отфильтруете свои результаты на другом уровне.

...