Mysql: Как получить значение offset?

12
sidorka
На сайте с 17.08.2012
Offline
211
1478

Допустим запрос:

SELECT id FROM table1

Допустим интересует запись с id =100500. Как получить значение смещения для этой записи в этом запросе? Нужна не сама запись, нужно именно смещение.

Дешевые домены для дорвеев и не только - от 55р (https://goo.gl/Wtnwqp)
LovelAss
На сайте с 05.06.2009
Offline
96
#1

Если я правильно понял суть вопроса, то так:


SELECT COUNT(*) AS `count` FROM `table1` WHERE `id` < 100500
sidorka
На сайте с 17.08.2012
Offline
211
#2

LovelAss, да, правильно. А если условия выборки посложнее примера?

Уточню. Есть некая выборка - условия выборки любые, вплоть до самых неожиданных. В выборке есть интересующая строка. Как получить смещение этой строки средствами мускула?

siv1987
На сайте с 02.04.2009
Offline
427
#3

sidorka, "смещение" это сферическое понятие в вакууме. Вы что хотите сделать?

PN
На сайте с 22.08.2012
Offline
103
#4
sidorka:
LovelAss, да, правильно. А если условия выборки посложнее примера?

Уточню. Есть некая выборка - условия выборки любые, вплоть до самых неожиданных. В выборке есть интересующая строка. Как получить смещение этой строки средствами мускула?

точно так же, как Вам написали выше. Для любого запроса COUNT(*) работает.

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
f4llou7
На сайте с 22.12.2007
Offline
83
#5
proksey-net:
точно так же, как Вам написали выше. Для любого запроса COUNT(*) работает.

Если есть GROUP BY, то для задачи не то покажет. А смещение от чего вообще считать то нужно и зачем?

TizerDivision ( https://tizerdivision.ru ) - монетизируй сайт эффективно.
PN
На сайте с 22.08.2012
Offline
103
#6
f4llou7:
Если есть GROUP BY, то для задачи не то покажет. А смещение от чего вообще считать то нужно и зачем?

если есть GROUP BY, значит считываем id записи (или какой там primary-ключ), а потом:

SELECT COUNT(*) AS `count` FROM `table1` WHERE `id`<'$id'
sidorka
На сайте с 17.08.2012
Offline
211
#7

siv1987, смещение - это offset. Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением.

f4llou7, от начала выборки вестимо.

proksey-net, А если так?

SELECT ... WHERE a>b, b<c, c=d, d>a+b

Тут просто сферическая выборка в вакууме, в которой находится интересующая строка.

PN
На сайте с 22.08.2012
Offline
103
#8
sidorka:
proksey-net, А если так?

тогда так:


SELECT COUNT(id) FROM table WHERE id<(SELECT id FROM table WHERE a>b, b<c, c=d, d>a+b LIMIT 1)
siv1987
На сайте с 02.04.2009
Offline
427
#9
sidorka:
siv1987, смещение - это offset.

Спасибо кэп. А то я не знал как это звучит на английском.

sidorka:
Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением.

Для выбора записи из другой таблицы используется идентификатор (внешний ключ) или информация на его основе, смещение применяется редко - это сферическое значение которое зависит от типа сортировки и условия отбора.

Вам зачем это нужно?

sidorka
На сайте с 17.08.2012
Offline
211
#10
siv1987:
Вам зачем это нужно?
sidorka:
Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением.

Разверну описание задачи все же.

Есть ключ, например id, но может и любой другой, составной скажем или на что фантазии хватит. Есть запрос некий - сферический в вакууме, не суть важно. В выборке по этому запросу однозначно присутствует строка с искомым ключом. Требуется найти ее смещение от начала выборки.

proksey-net, а если ключ составной?

---------- Добавлено 02.12.2015 в 16:25 ----------

siv1987:
Вам зачем это нужно?
sidorka:
Нужно по смещению записи в выборке из одной таблице выбрать запись из другой таблицы с таким же смещением.

Разверну описание задачи все же.

Есть ключ, например id, но может и любой другой, составной скажем или на что фантазии хватит. Есть запрос некий - сферический в вакууме, не суть важно. В выборке по этому запросу однозначно присутствует строка с искомым ключом. Требуется найти ее смещение от начала выборки.

proksey-net, а если ключ составной?

---------- Добавлено 02.12.2015 в 16:31 ----------

Вроде такого

SELECT OFFSET FROM ( SELECT .выборка. ) AS s WHERE s.conditions
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий