Php 按关键字排序列

Php 按关键字排序列,php,sql,Php,Sql,我有一个充满记录的数据库,通过使用以下MySQL语法: public static function allfood($db) { $sql = "SELECT DISTINCT sort, sortname FROM tblDishes WHERE foodanddrinks = 'e'"; $result = $db->listing($sql); return $result; } 我把所有结果按字母顺序排列。但我想确定我自己的顺序。例如,Rabbit

我有一个充满记录的数据库,通过使用以下MySQL语法:

 public static function allfood($db) {
    $sql = "SELECT DISTINCT sort, sortname FROM tblDishes WHERE foodanddrinks = 'e'";
    $result = $db->listing($sql);
    return $result;
  }
我把所有结果按字母顺序排列。但我想确定我自己的顺序。例如,
Rabbit
应该显示在
Apple
之前。是否有SQL语法允许我组织自己的显示顺序

编辑
这在我的
dbconnections.php
文件中有说明

public function listing($sql) {
    $result = mysql_query($sql, $this->_connection);
    while($row=mysql_fetch_array($result)) {
      $return[] = $row;
    }
    return $return;
  }
这是我尝试过的,但是在
dbconnections.php
文件中出现了一个错误

public static function allfood($db) {
        $sql = "SELECT DISTINCT sort, sortname FROM tblDishes WHERE foodanddrinks = 'e' order by case sortname 
        when 'Rabbit' then smth1
        when 'Apple' then smth2
        when 'Fish' then smth3
        when 'Pasta' then smth4
        when 'Snacks' then smth5";
        $result = $db->listing($sql);
        return $result;
      }

首先,您没有对发布的代码段中的数据进行排序。如果您想要逆字母顺序,只需使用:

public static function allfood($db) {
  $sql = "SELECT * FROM tblDishes WHERE foodanddrinks = 'e' ORDER BY foodanddrinks DESC";
  $result = $db->listing($sql);
  return $result;
}

编辑:这可能也值得你花点时间

首先,您没有对发布的代码段中的数据进行排序。如果您想要逆字母顺序,只需使用:

public static function allfood($db) {
  $sql = "SELECT * FROM tblDishes WHERE foodanddrinks = 'e' ORDER BY foodanddrinks DESC";
  $result = $db->listing($sql);
  return $result;
}
编辑:这可能也值得你花点时间

这可能会帮助您:

SELECT * FROM tblDishes WHERE foodanddrinks = 'e'
order by case field_name
when 'Rabbit' then smth1
when 'Apple' then smth2
...
else smth666 
end
这可能会帮助您:

SELECT * FROM tblDishes WHERE foodanddrinks = 'e'
order by case field_name
when 'Rabbit' then smth1
when 'Apple' then smth2
...
else smth666 
end

您可以通过向名为DisplayOrder的表中添加另一列,然后按该列对表进行排序来完成此操作。

您可以通过向名为DisplayOrder的表中添加另一列,然后按该列对表进行排序来完成此操作。

这有点开销,但应该可以工作

如果有一个包含关键字和数字优先级的单独表,则可以在查询中向该表添加联接,然后按优先级列排序

如果你只有,比方说,十个固定关键词,你可能会像其他受访者建议的那样,按情况使用顺序。如果你有几十个关键字,或者一个动态更新的列表,或者有一个显著的频率,你可能需要考虑一个优先级查找表。
此外,如果关键字有大量重复,您可能需要考虑将它们规范化到自己的表中,并将优先级作为字段。

这有点开销,但应该可以

如果有一个包含关键字和数字优先级的单独表,则可以在查询中向该表添加联接,然后按优先级列排序

如果你只有,比方说,十个固定关键词,你可能会像其他受访者建议的那样,按情况使用顺序。如果你有几十个关键字,或者一个动态更新的列表,或者有一个显著的频率,你可能需要考虑一个优先级查找表。

此外,如果关键字有大量重复,您可能需要考虑将它们归一化到自己的表中,并将优先级作为字段。

什么定义了顺序?为什么兔子会出现在苹果之前?这个节目是关于食物的,重要的是以
V
H
开头的单词会首先显示在列表中。所以,这就是我的问题,我可以按关键字排序结果吗,例如
V
H
?这并不能解释为什么兔子会在苹果之前出现。这只是一种随机的订购方式。我想控制订单的方式什么定义了订单?为什么兔子会出现在苹果之前?这个节目是关于食物的,重要的是以
V
H
开头的单词会首先显示在列表中。所以,这就是我的问题,我可以按关键字排序结果吗,例如
V
H
?这并不能解释为什么兔子会在苹果之前出现。这只是一种随机的订购方式。我想控制排序的方式出于某种原因,
orderby
代码段没有出现在帖子中。但是它就在那里,不用担心:)米切尔没有要求反向排序,而是要求基于业务需求的特殊排序。@BitKFu-我发布了一个链接,解释了自定义排序。出于某种原因,
ORDER BY
片段没有出现在帖子中。但是它就在那里,不用担心:)米切尔没有要求反向排序,而是要求基于业务需求的特殊排序。@BitKFu-我发布了一个链接,解释了自定义排序。如果我要排序的单词不止一个,这就像“当”兔子比smth1当“苹果”比smth2当“鱼”比smth3当“毒药”比smth4…我想不会有这么多定制订单。结尾如下
否则smth666 end
请用正确的语法编辑您的答案好吗?从我的代码示例开始?如果我有不止一个单词要订购,那就像“当”兔子比smth1“苹果”比smth2“鱼”比smth3“毒药”比smth4…我想不会有这么多定制订购。结尾如下
否则smth666 end
请用正确的语法编辑您的答案好吗?从我的代码示例开始?我的想法是正确的,但这不是一个真正的选项。我不想对数据库做任何更改。您最好按照自己的需要设计数据库。在本例中,添加排序列通常是这样做的。是的,我知道,但必须有一种方法可以按自定义顺序对所有内容进行排序,不是吗?我想是的,但这不是一个真正的选项。我不想对数据库做任何更改。您最好按照自己的需要设计数据库。在本例中,添加排序列通常是这样做的。是的,我知道,但必须有一种方法按自定义顺序对所有内容进行排序,不是吗?这是一个固定数量的关键字。最多10个。这是一个固定数量的关键字。最多10个。