не могу понять MySQL ORDER BY - PullRequest
       20

не могу понять MySQL ORDER BY

2 голосов
/ 24 февраля 2012

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

У меня есть таблица данных с индексом автоинкремента. Я хочу выбрать последние 2 строки таблицы. Вот что у меня есть:

SELECT * FROM tburg_golf ORDER BY 'index' DESC LIMIT 2

По какой-то причине, он дает мне первые два ряда. Я попытался снять ограничение, изменив DESC на ASC ... все, что я могу придумать.

Если любопытно, это часть большого кода:

$result = mysql_query("SELECT * FROM tburg_golf ORDER BY 'index' DESC LIMIT 2");

while($row = mysql_fetch_assoc($result))  {
    $date = $row['date'];
    $day = $row['day'];
    $time = $row['time'];
    $icon = $row['icon'];
    $forecast = $row['forecast'];
    $updated = $row['updated'];

echo $date.$day.$time.$icon.$forecast.$updated.'<p>';
}

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012
SELECT * FROM tburg_golf ORDER BY `index` DESC LIMIT 2

Если вы наберете 'index' MySQL закажет строку 'index', которая одинакова для всех кортежей, вместо вашего столбца index.

2 голосов
/ 24 февраля 2012

Есть ли в таблице поле с именем "index"?

Если есть, я думаю, слово index является зарезервированным словом в MySQL, поэтому оно может не работать. Либо переименуйте поле, либо оберните его с помощью `вместо ', например

SELECT * FROM tburg_golf ORDER BY `index` DESC LIMIT 2
2 голосов
/ 24 февраля 2012

Вы заказываете по 'index', что является строковой константой .Вместо этого имена столбцов заключаются в `

. Если ваш автоматически увеличивающийся столбец называется index, это будет работать;

SELECT * FROM tburg_golf ORDER BY `index` DESC LIMIT 2

Упорядочение по 'index' будет сортировать каждую строку по однойстрока, которая в основном даст вам строки в случайном порядке.

...