Mysql: "SET @Variable = 0" в одном запросе [Java] - PullRequest
0 голосов
/ 24 января 2019

У меня есть два запроса sql. Но в Java я не могу установить переменные.

Я пытался обобщить его в одном запросе. Но это не работает, потому что синтаксис SQL неверен.

SET @rn = 0;
SELECT * 
FROM (SELECT t.id, @rn := @rn + 1 AS rank 
      FROM stats t 
      ORDER BY t.points DESC) t2 
WHERE t2.id = ?;

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вам нужно сделать соединение следующим образом:

SELECT stats.id, @rn := @rn+1 AS rank
FROM stats, (SELECT @rn:=0) a
WHERE stats.id = ?

Если у вас mysql 8.0, вы можете использовать: ROW_NUMBER () или RANK () :

SELECT
   id,
   ROW_NUMBER() OVER w AS 'row_number',
   RANK()       OVER w AS 'rank',
FROM stats
WHERE stats.id = ?
WINDOW w AS (ORDER BY points);
0 голосов
/ 24 января 2019

Если проблема заключается только в части SET, которую вы можете решить

SELECT t.id, @rn := @rn + 1 AS rank 
FROM stats t 
CROSS JOIN ( SELECT @rn := 0 ) as parameters
ORDER BY t.points DESC

Вы также можете проверить это руководство http://www.mysqltutorial.org/mysql-row_number/

...