Я нашел здесь несколько постов и несколько ответов. Я пробовал каждый из них с плохими результатами. Я не хочу использовать хранимые процедуры.
Я использую Hibernate на Java с MySQL. Часть моей строки запроса:
SET @rank = 0;
SET @limit = 0.1;
SELECT (@limit := ROUND(COUNT(id) * @limit)) FROM Pics;
SELECT Q1.popularity FROM Pics AS p INNER JOIN (
SELECT IF((@rank := @rank + 1) <= @limit, true, false) AS 'popularity', p.id
FROM Pics AS p
ORDER BY p.points DESC
) AS Q1 ON Q1.id = p.id WHERE p.id = 7;
Некоторые люди говорят, что решение использует /*'*/:=/*'*/
внутри запроса ( post ), но оно не работает для меня:
SET @rank = 0;
SET @limit = 0.1;
SELECT (@limit /*'*/:=/*'*/ ROUND(COUNT(id) * @limit)) FROM Pics;
SELECT Q1.popularity FROM Pics AS p INNER JOIN (
SELECT IF((@rank /*'*/:=/*'*/ @rank + 1) <= @limit, true, false) AS 'popularity', p.id
FROM Pics AS p
ORDER BY p.points DESC
) AS Q1 ON Q1.id = p.id WHERE p.id = 7;
Я отчаялся!
Есть идеи, пожалуйста? Я был бы так благодарен!
Спасибо!