Думал, думал. Все равно вижу варианты в переборе.Автор оригинала: zerkms
Омск
я уже написал набор операторов и функций
подумай хоть чуть-чуть
сложно догадаться, что в этом случае нужно посмотреть какой `in` у записи с `id `= 5 и выбирать по `in` >= 1000000Так как после сортировки по in, полностью поменяеться порядок следования id.
очень в тему: http://www.mysqlperformanceblog.com/2008/03/16/mysql-error-message-nonsenses/я всегда считал, что MySQL говорит что-то более информативное, чем
— поменяйте AND на WHERE.to use near 'AND
Правильно что ты увидел вот такое:Автор оригинала: Омск
SELECT z1.id, ceil( z1.number /3 ) AS page
FROM (
SELECT df1. * , (
SELECT count( * ) +1
FROM rat_in AS df
WHERE df1.id > df.id
) AS number
FROM rat_in AS df1
ORDER BY df1.count_in ASC
) AS z1
WHERE z1.id =16
Увидел када ответ подумал работает) Ура). потестировал и понял, выдает совсем не то. Выдавал следующее:
id=1 page=1
id=2 page=1
id=3 page=1
id=4 page=2
id=5 page=2
И так далее. Вобщем чтобы получить page=ceil( id /3 )
ЗЫ, Я уже менял AND на WHERE но и тогда получил ошибку. Подумал что не в этом дело.
-~{}~ 20.03.08 22:18:
-- Описание входных параметров запроса (их всего два):
-- 1) @ord - задает порядок сортировки:
-- ACS - по возрастанию
-- DESC - по убыванию
-- 2) @id - задает интересующий нас ID
select t1.*,
count(1) - 1 as cnt -- Кол-во строк до нашего ID.
from test t1
join test t2
on (t1.inr > t2.inr or t1.inr = t2.inr and t1.id >= t2.id)
and @ord = 'ASC'
or
(t1.inr < t2.inr or t1.inr = t2.inr and t1.id >= t2.id)
and @ord = 'DESC'
group by t1.id, t1.inr
having t1.id = @id
Я увидел и так одну строку. Просто када указывал id=1 переменная page=1. если указывал id=5 page=2. И так далее. Указад бы 100, получил бы 34.Автор оригинала: Roman777
Правильно что ты увидел вот такое:
id=1 page=1
id=2 page=1
id=3 page=1
id=4 page=2
id=5 page=2
Но такое ты мог увидеть только в том случае, если не задавал условие WHERE z1.id =16, в противном случае ты бы получил все одну строку
. Например такую: id=16 page=4