Я использую переменные запроса в своем спящем MySQL запросе hibernate. Для каждого выполнения я должен установить переменную запроса как 0.
для этого я выполняю другой запрос, как
SET @var: = 0.
Но Spring делает вещи асинхронными. Он выполняет другой запрос после установки переменной. Поэтому результаты не такие, как ожидалось.
У меня есть заголовок и элементы таблиц. Каждый заголовок содержит несколько элементов.
Пример
header = {h1, h2, h3},
товар = {i1, i2, i3, i4, i5, i6, i7, i8}
h1 -> {i1, i2, i3}, h2 -> {i4, i5}, h3 -> {i6, i7, i8}
я хочу результат как
строка 1: h1, i1
строка 2: h1, i2
row3: h1, i3
и т. Д.
мы можем использовать здесь соединения. Но в моем случае я получаю результаты как нумерацию страниц.
как первые от 1 до 10 заголовков (с элементами) на первой странице, от 1 до 20 на 2-й странице.
если я использую соединения с ключевым словом limit , мы получаем нужные записи.
но здесь я хочу количество заголовков для каждой страницы.
Именно поэтому я использую переменную запроса @cnt для подсчета заголовков.
запрос:
SET @cnt:=0;
SELECT pk_header_id,
pk_item_id,
@cnt := IF( @header_id is not null AND @header_id != pk_header_id,
@cnt := @cnt + 1,
@cnt) AS cnt,
@header_id:=pk_header_id
FROM header join item on fk_header_id = pk_header_id order by pk_header_id.
Для каждого выполнения переменная @cnt увеличивается до 10, и я должен сделать ее равной 0 для каждого выполнения запроса.