无法弄清楚MySQL ORDER BY

时间:2012-02-24 14:26:08

标签: php mysql select sql-order-by

我对MySQL很陌生......所以我相信这对某人来说可能是一个简单的解决方法......我已经尝试了教程和其他帮助主题,但无法弄清楚它为什么不起作用。

我有一个带有自动递增索引的数据表。我想选择表格的最后两行。这就是我所拥有的:

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 个答案:

答案 0 :(得分:3)

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

如果您键入'index',MySQL将对字符串'index'进行ORDER BY,这对于所有元组而言都是相同的,而不是列index

答案 1 :(得分:2)

您按'index'排序,这是字符串常量。相反,列名由`

包围

如果你的自动递增列实际上被称为index,这将起作用;

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

'index'排序将按相同的字符串对每一行进行排序,这基本上会以随机顺序为您提供行。

答案 2 :(得分:2)

表中是否有一个名为“index”的字段?

如果我相信单词index是MySQL中的保留字,这就是为什么它可能不起作用的原因。重命名字段或用`而不是'例如

包装它
SELECT * FROM tburg_golf ORDER BY `index` DESC LIMIT 2