按列值排序MySQL结果


Order MySQL result by column value

如果这是我今天的第二篇文章,我很抱歉,但我需要一点帮助。我有表在mysql数据库中持有一些产品(id,名称,描述,价格,url,类别)。现在,当我显示产品时,我需要首先显示category='X'的所有产品(不管产品在表中的实际顺序如何),然后是category="Y"的产品,最后是category="Z"的产品。只有3个类别,我只是将列添加到产品表中,而没有创建单独的"类别"表(我知道这很糟糕)。这是一个简单的代码拉出所有的产品(我不能使用PDO由于事实的网站是旧的,只做旧/常规mysql)

while($prod = mysql_fetch_assoc($sql)) {
    $id = $prod['id'];
    $titolo = $prod['titolo'];
    $descr = $prod['descrizione'];
    $prezzo = $prod['prezzo'];
    $foto_piccola = $prod['url_foto_piccola'];
    $foto_grande = $prod['url_foto_grande'];
    $cat = $prod['categoria'];
            // display all products
}

有什么想法可以让我简单/快速地做到这一点吗?我的第一个猜测是在while()循环中做一个开关('category'),但我最终得到了很多重复的代码。

任何帮助和建议都是非常感谢的。谢谢你这是我的$sql $sql = mysql_query(" SELECT * FROM prodotti Order BY categoria='marmellata' DESC, categoria='altro' DESC, categoria='oli' DESC")

这种方式不起作用。我想拉出类别的名称并在其下方显示该类别的产品

如果您的类别字段是INT并且您的类别按您想要的顺序输入,则可以执行Order By category

或者

如果您的类别按名称输入(尽管我建议按ID输入),您可以执行Order BY category='X' DESC, category='Y' DESC, category='Z' DESC

甚至可以使用SQL的Field()函数

order by Field(category, X, Y, Z)