按列值排序MySQL结果

时间:2013-05-03 22:06:11

标签: php mysql grouping

我很抱歉,今天我的第二篇文章很糟糕,但我还需要一点帮助。 我在mysql DB中有一个表,其中包含一些产品(id,name,description,price,url,CATEGORY)。现在,当我展示产品时,我需要首先显示所有类别='X'的产品(无论表中产品的实际顺序如何),而不是类别=“Y”的产品,最后是带有类别的产品= “Z”。只有3个类别,我只是将列添加到products表中,而没有创建单独的“类别”表(我知道它很糟糕)。 这是拉出所有产品的简单代码(我不能使用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")

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

2 个答案:

答案 0 :(得分:1)

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

-OR -

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

答案 1 :(得分:1)

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

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