Php 按关键字排序列
我有一个充满记录的数据库,通过使用以下MySQL语法: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
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个。