$pdo = $db->prepare('SELECT * FROM animals WHERE id = ?');
$pdo->execute(array($id));
$animals = $pdo->fetchAll();
foreach ($animals as $row) {
echo "<li>".$row["category"]."/".$row["name"]."</li>";
}
我的结果是:
我现在想按类别对结果进行排序。不是按首字母,而是按逻辑顺序。所以最后我的结果应该是:
当然,这不适用于 ORDER BY ASC。但是有没有一种方法可以定义这些类别“一”“二”“三”“四”并说:首先打印所有“一”,然后是“二”......并在这个类别中按名称排序?
最佳答案
您在评论中说过,“一”、“二”、“三”和“四”是唯一可能的值。
因此您可以使用 FIND_IN_SET()实现这一目标的功能。
尝试:
SELECT * FROM animals
WHERE id = ?
ORDER BY FIND_IN_SET(category,'one,two,three,four') ASC, name ASC
FIND_IN_SET(category, 'one,two,three,four')
返回以逗号分隔的集合中给定 category
值的位置索引(从 1 到 n)值 'one,two,three,four'
。
例如,如果 category = 'three'
,则 FIND_IN_SET(category,'one,two,three,four') = 3
关于php - 如何按单个顺序对 mySQL 结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43346859/