2015-09-09 3 views
-3

Я делаю приложение для отслеживания, и я хочу показать пользователю, в каком месте он находится. Для этого я пытаюсь упорядочить «totalkm» desc, а затем получить номер строки. Проблема в том, что я не знаю, как это сделать, поскольку я довольно новичок в мире базы данных.Как получить номер строки в mysql?

Я пытался что-то вроде этого:

WITH mytable AS { 
    SET @row_number = 0; 
    SELECT (@row_number := @row_number +1) AS num, user,totalkm 
FROM profile ORDER BY totalkm DESC ; } 
SELECT num 
    FROM mytable WHERE user = "bogdan9832"; 

Но я получаю сообщение об ошибке:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mytable AS { SET @row_number = 0' at line 1

Из того, что я понял, что нет никакой поддержки WITH в MySQL. Может ли кто-нибудь показать мне альтернативу?

+0

Вы должны использовать переменные. Посмотрите [здесь] (http://www.mysqltutorial.org/mysql-row_number/) –

ответ

0

Вы должны использовать следующий запрос для того же: -

Сначала объявить переменную как: -

SET @row_number = 0; 

Затем использовать этот запрос: -

SELECT (@row_number:= @row_number + 1) AS ROW_NUMBER, OTHER_COLS 
FROM YOUR_TABLE; 
0

ВЫБРАТЬ NUM, пользователь , totalkm ОТ (

SELECT ( @ro w_number: = @row_number +1 ) А.С. NUM, пользователь, totalkm из профиля ORDER BY DESC totalkm ) в качестве в котором пользователь = "bogdan9832"

0

Использование суб запросов, но только один оператор SQL: -

SELECT num 
FROM 
(
    SELECT (@row_number := @row_number +1) AS num, user, totalkm 
    FROM 
    (
     SELECT banner.* 
     FROM profile 
     ORDER BY totalkm DESC 
    ) profile 
    CROSS JOIN (SELECT @row_number := 0) sub0 
) sub0 
WHERE user = "bogdan9832" 
Смежные вопросы