我有一个名为'demo'的表,其中包含以下数据:
Name Group MX A XY 1 B YZ 1 B XY 2 C YZ 5 C XY 3 D YZ 2 E YZ 1 E XY 1
我想要基于'MX'最大值的唯一名称,当两个相同名称的'MX'相等时,我需要其中一个,如下图所示:
Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 -- or this {E XY 1}
这是我的疑问:
SELECT demo.Name, demo.Group, demo.MX
FROM (
SELECT Name, MAX(MX) AS max_values
FROM demo
GROUP BY Name
) demo2
INNER JOIN demo
ON demo.Name = demo2.Name
AND demo.MX = demo2.max_values
它很迷人,但当两个名字相同时,它会显示如下:
Name Group MX A XY 1 B XY 2 C YZ 5 D YZ 2 E YZ 1 E XY 1
您推荐哪些方法?
答案 0 :(得分:0)
为了避免两个值,其中Name和MX等于你可以使用(假)聚合函数和分组,例如:
SELECT demo.Name, min(demo.Group), demo.MX
FROM (
SELECT Name, MAX(MX) AS max_values
FROM demo
GROUP BY Name
) demo2
INNER JOIN demo ON demo.Name = demo2.Name AND demo.MX = demo2.max_values
GROUP BY demo.Name, demo.MX