简体   繁体   English

mysql-根据不同表中另一列的最大值选择唯一列

[英]mysql - Select unique column based on max value of another column in a different table

I'm trying to select only the highest kw ( model table) for each category ( type table). 我试图为每个类别type表)仅选择最高的kwmodel表)。

Model table 型号表

+-----+----+---------+
| 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 |
+-----+----+---------+

Type table 型号表

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

Attempts 尝试
1. this query returns a list of all the kws and categories : 1.此查询返回所有kws类别的列表:

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. I tried to do something like this answer but it doesn't work: 2.我试图做这样的事情的答案 ,但它不工作:

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
)

Does anybody have an idea? 有人有主意吗?

Use MAX and GROUP BY 使用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

OUTPUT OUTPUT

MAX(m.kw)   category
10          1
7           2

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM