Php MySQL分组依据或订单依据

Php MySQL分组依据或订单依据,php,mysql,database,Php,Mysql,Database,我有一张mysql表 C1 - C2 A - 25.6 B - 22.5 C - 19.5 E - 15.6 A - 18.5 B - 20.5 F - 18.2 D - 19.6 F - 16.1 E - 20.6 我需要订购描述c2,不要重复c1 A - 25.6 B - 22.5 E - 20.6 D - 19.6 F - 18.2 到目前为止,我已经 for ($i=1; $i<=5; $i++) { $query = mysql_query("SELECT * F

我有一张mysql表

C1 - C2
A - 25.6
B - 22.5
C - 19.5
E - 15.6
A - 18.5
B - 20.5
F - 18.2
D - 19.6
F - 16.1
E - 20.6
我需要订购描述c2,不要重复c1

A - 25.6
B - 22.5
E - 20.6
D - 19.6
F - 18.2
到目前为止,我已经

 for ($i=1; $i<=5; $i++) {
     $query = mysql_query("SELECT * FROM myTable WHERE date='$SL_DATE' ORDER BY c2 DESC LIMIT $i",$db);
     while ($row = mysql_fetch_array($query)) {
         $c2_[$i] = $row[c2];
     }
 }

有什么想法吗?

看起来您希望每个c1都有最高的c2:


你需要通过不重复第一列来确定你的意思。你确实需要一个小组。在这里,它从第二列中选择最大值:

SELECT c1, max(c2)
FROM myTable
group by col1
WHERE date='$SL_DATE
ORDER BY max(c2) DESC
LIMIT $i
以下语法在MySQL中不起作用:

SELECT c1, c2
FROM myTable
group by col1
WHERE date='$SL_DATE
ORDER BY c2 DESC
LIMIT $i

但是,它从其中一行中为c2选择任意值。您应该更具体地说明您想要哪个值,例如最大值。

我认为这个查询可以:

SELECT C1, max(C2) as maxC2 FROM myTable WHERE date='$SL_DATE' group by C1 order by maxC2 DESC
不再使用PHP mysql_*扩展。在最新版本的PHP中,mysql_*扩展被标记为已弃用

在我看来,仅仅使用MySQL是无法实现目标的。您必须使用php来管理组。就像下面的例子一样,您将来应该使用PHP PDO对象

$sql = "SELECT * FROM my_table ORDER BY column1";
try {
    foreach ($db->query($sql, PDO::FETCH_ASSOC) as $row) {
        if (!isset($data[$row['column1'])) {
            $data[$row['column1'] = array();
        }

        $data[$row['column1'][] = $row['column2'];
    }
} catch (PDOExcpetion $e) {
    echo $e->getMessage();
    exit;
}

echo "<pre>";
var_dump($data);
echo "</pre>";

在模具数据数组中,有组作为键,只出现一次。在这些组中,会给出所有值。

您的主键是什么?对于$i=1$是啊,对不起。我需要c2中的最大值,但不包括一次以上的c1
SELECT C1, max(C2) as maxC2 FROM myTable WHERE date='$SL_DATE' group by C1 order by maxC2 DESC
$sql = "SELECT * FROM my_table ORDER BY column1";
try {
    foreach ($db->query($sql, PDO::FETCH_ASSOC) as $row) {
        if (!isset($data[$row['column1'])) {
            $data[$row['column1'] = array();
        }

        $data[$row['column1'][] = $row['column2'];
    }
} catch (PDOExcpetion $e) {
    echo $e->getMessage();
    exit;
}

echo "<pre>";
var_dump($data);
echo "</pre>";