Выборка места в топе SQL

столкнулся с такой проблемой, мне нужно получить цифру места конкретного столбца из выборки. Т.е я делаю запрос:

SELECT * FROM table ORDER BY money DESC

И вот к примеру этот человек на 10 месте, как мне получить эту 10?


Ответы (3 шт):

Автор решения: Enokin
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM table ORDER BY money DESC";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " - Money: " . $row["money"]. "<br>";
  }
} else {
  echo "0 results";
}
$conn->close();
?>

На php можно сделать так. Вообще как я понял, у вас в таблице должна быть колонка с номером топа и потом в цикле вы можете вывести эти данные.

→ Ссылка
Автор решения: Aziz Umarov

Используйте оконные функции если есть или

Select * 
From ( SELECT t.*, 
   @rownum := @rownum + 1 AS row_number
 FROM table t, 
   (SELECT @rownum := 0) r 
 ORDER BY money DESC ) as data
where row_number = 10

Можете использовать в место 10 то что вам нужно

→ Ссылка
Автор решения: Olga Romantsova

Select * from table ORDER BY money OFFSET n rows

Где n - количество пропущенных строк В Вашем случае n=9

→ Ссылка