Giống như mluebke
đã nhận xét, sử dụng GROUP có nghĩa là bạn chỉ nhận được một kết quả cho mỗi loại. Dựa trên danh sách bạn đưa ra làm ví dụ, tôi nghĩ bạn muốn một cái gì đó như thế này:
$sql = "SELECT * FROM products WHERE category IN (10,120,150,500) GROUP BY category ORDER BY category, id";
$res = mysql_query($sql);
$list = array();
while ($r = mysql_fetch_object($res)) {
$list[$r->category][$r->id]['name'] = $r->name;
$list[$r->category][$r->id]['whatever'] = $r->whatever;
// etc
}
Và sau đó lặp qua mảng. Ví dụ:
foreach ($list as $category => $products) {
echo '<h1>' . $category . '</h1>';
foreach ($products as $productId => $productInfo) {
echo 'Product ' . $productId . ': ' . $productInfo['name'];
// etc
}
}