MySQL variabels

Всем привет.

Недавно столкнулся, как по мне с очень интересной задачей. И реально пришлось задействовать @variable from MySQL. Хочу и Вам привести реальный пример, где они необходимы и могут Вам помочь. Я думаю, эта статья будет полезна.

Давайте изначально поставим задачу. У нас есть таблица users и нам стоит делать выборку из нее по определенным критериям:

- сортируем по lastName, firstName by ASC

- и нужно взять 3 записи после определённой (эту запись мы определяем по ID), но все происходить с     учетом того что записи отсортированы

Давайте уточним что ID для определённой записи мы берем по определенному критерию (в это мы не будем углубляться). Будем считать что мы уже на входе имеем ID записи с которой нужно взять следующих 3 записи по нашем критериям.

 Таблица users:

id int(11) NOT NULL  

firstName varchar(255) NULL  

lastName varchar(255) NULL  

city varchar(255) NULL  

address varchar(255) NULL

Заполняем ее следующими данными:

После сортировки мы имемь:

Нам нужно взять следующих 3 записи после id=5 но нужно учесть что всегда запись для старта будет определяться динамически. Тоесть не сможем воспользоваться одним LIMIT

Тоесть результат должен быть

И вот для решения это нужен такой запрос:

И самое главное что прелесть вся в том что @ - Вы создаете переменную session scope и можете на одной же итереации ее изменить и учесть ее значение как через сылку в данной итерации так в следующих шагах.

Давайте разберем как оно работает.

SELECT @check := 0 произведена инициализация со значением 0.

тоесть на проходах до id=5 chk всегда 0 а когда id=5 тогда @check стает 1 и каждый следующий проход мы берем id!=5 и тогда берем значение @check а оно после 5 стало 1. 

Вот и результат внутреннего запроса

Главную строку я подчеркнул.

Смотрите сейчас запись с id=5 виделена таким образом что chk со значением 1 начинается после записи котору мы указали как точну отсчета.

 

Вот и все. Я очень надеюсь что Вам это пригодиться. И в заключение читайте doc, это реально нужно для работы)))))))))))))))

 

 

comments powered by Disqus

Интересное

Стив Джобс о Mac OS X:
«Я убежден в том, что половина того что отделяет успешных предпринимателей от неудачников — это настойчивость.».
Марк Эллиот Цукерберг:
«Люди всегда немного скептически относятся к чему-то быстрорастущему, но им нужно просто взглянуть на то, что делается.».
Марк Эллиот Цукерберг:
"Множество конфиденциальных вещей намного проще держать в централизованной системе."
Стив Джобс о операционной системе Google Android:
Мы не лезем в поиск, но они решили заняться телефонами. Не надо заблуждаться, они хотят уничтожить iPhone. Мы им не позволим.
Стив Джобс о Mac OS X:
«Мы сделали значки на экране такими красивыми, что вам захочется их лизнуть».


Курсы валют

bank-ua.com bank-ua.com bank-ua.com

Стоит взглянуть