SQL - 选择多个最小值

问题描述 投票:0回答:1

我有 SQL 查询:

SELECT min(m.density), m.metal_name
FROM metal m
INNER JOIN storage s ON m.id = s.metal_id
GROUP BY m.metal_name;

结果我得到:

+-----------+--------------+
| m.density | m.metal_name |
+-----------+--------------+
| 1200      | GOLD         |
+-----------+--------------+
| 1200      | TIN          |
+-----------+--------------+
| 1600      | COPPER       |
+-----------+--------------+
| 1800      | PLATINUM     |
+-----------+--------------+

我想要的结果是这样的(只有密度的最小值):

+-----------+--------------+
| m.density | m.metal_name |
+-----------+--------------+
| 1200      | GOLD         |
+-----------+--------------+
| 1200      | TIN          |
+-----------+--------------+

有一个简单的方法可以达到这个结果吗?

sql select inner-join mysql-8.0
1个回答
0
投票

你可以尝试这样的事情:

SELECT m.density,
       m.metal_name
FROM   metal m
WHERE  m.density = (SELECT MIN(a.density)
                    FROM   metal   a
                    JOIN   storage s
                      ON   a.id = s.metal_id);

选择金属及其密度,使密度等于存储中可用的最小密度。

© www.soinside.com 2019 - 2024. All rights reserved.