Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MySQL数据库中获取按字段分组的值最高的行_Mysql_Sql - Fatal编程技术网

从MySQL数据库中获取按字段分组的值最高的行

从MySQL数据库中获取按字段分组的值最高的行,mysql,sql,Mysql,Sql,我有下表 +----+----------+-----+ | id | priority | sub | +----+----------+-----+ | 1 | 1 | A | | 2 | 3 | A | | 3 | 4 | A | | 4 | 2 | B | | 5 | 9 | B | +----+----------+-----+ 我试图为每个子对象获取具有最高优先级的行。因此,结果如下

我有下表

+----+----------+-----+
| id | priority | sub |
+----+----------+-----+
| 1  |    1     |  A  |
| 2  |    3     |  A  |
| 3  |    4     |  A  |
| 4  |    2     |  B  |
| 5  |    9     |  B  |
+----+----------+-----+
我试图为每个子对象获取具有最高优先级的行。因此,结果如下:

+----+----------+-----+
| id | priority | sub |
+----+----------+-----+
| 3  |    4     |  A  |
| 5  |    9     |  B  |
+----+----------+-----+
我尝试过分组,但结果不可预测。我猜是一个嵌套查询,首先开始查找最高优先级,如下所示:

select max(priority),sub from t group by sub
这让我

+----------+-----+
| priority | sub |
+----------+-----+
|    4     |  A  |
|    9     |  B  |
+----------+-----+

但我也需要ID,添加到查询中显然会给我错误的ID,将此结果与同一个表上的查询连接会给我一个错误(ER_ununiq_table(1066)),这很有意义。。。有人能把我推向正确的方向吗?

子查询背后的想法是,它分别为每个
子查询获得
优先级的最大值。然后,其结果将联接回原始表

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  sub, max(priority) maxVal
            FROM    tableName
            GROUP BY sub
        ) b ON a.sub = b.sub AND
                a.priority = b.maxVal

+1
用于添加具有所需结果的样本记录。