【问题标题】:mysql - Select unique column based on max value of another column in a different tablemysql - 根据不同表中另一列的最大值选择唯一列
【发布时间】:2015-06-08 10:41:54
【问题描述】:

我正在尝试为每个 类别type 表)只选择最高的 kwmodel 表)。

模型表

+-----+----+---------+
| id  | kw | type_id |
+-----+----+---------+
|   1 |  2 |       1 |
|   2 |  5 |       1 |
|   3 | 10 |       2 |
|   4 |  4 |       2 |
|   5 |  5 |       2 |
|   6 |  4 |       3 |
|   7 |  3 |       4 |
|   8 |  7 |       5 |
+-----+----+---------+

类型表

+-----+----------+
| id  | category |
+-----+----------+
|   1 |        1 | 
|   2 |        1 |
|   3 |        2 |
|   4 |        2 |
|   5 |        2 |
+-----+----------+

尝试
1. 此查询返回所有 kwscategories 的列表:

SELECT A.kw, B.category
FROM AC_MODEL A
INNER JOIN AC_TYPE B ON A.type_id = B.id
ORDER BY A.kw DESC 

2。我试图做这样的事情answer,但它不起作用:

SELECT A.kw, B.category
FROM AC_MODEL A
INNER JOIN AC_TYPE B ON A.type_id = B.id
ORDER BY A.kw DESC 
WHERE (A.kw, B.category) IN (
    SELECT MAX(A.kw), B.category 
    FROM AC_MODEL A
    INNER JOIN AC_TYPE B ON A.type_id = B.id
    GROUP BY B.category
)

有人有想法吗?

【问题讨论】:

    标签: mysql sql database join


    【解决方案1】:

    使用MAXGROUP BY

    SELECT MAX(m.kw), t.category
    FROM model m
    INNER JOIN type t ON m.type_id = t.id
    GROUP BY t.category
    

    输出

    MAX(m.kw)   category
    10          1
    7           2
    

    SQL FIDDLE:http://sqlfiddle.com/#!9/5d0df/5/0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-29
      • 2014-10-05
      • 2021-05-25
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      相关资源
      最近更新 更多