从sql结果中删除重复项并显示其他列

5w9g7ksd  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(437)

我试图从数据库中获取信息,但在保留其他列数据的同时删除重复值。我试过使用distinct,因为它是我能找到的唯一真实信息。我尝试了下面的方法,这样可以删除重复的名称,因此我有了“name name2 name3”来删除重复的name2:
选择distinct Column 1table 哪里 column3 比如“item1”
我现在一直在尝试让它显示第3列和第2列的数据下面是表当前的样子:

| Column 1 | Column 2 | Column 3 |
 | Name     | 71       | Item1    |
 | Name2    | 78       | Item1    |
 | Name2    | 77       | Item1    |
 | Name3    | 75       | Item1    |
 | Name     | 75       | Item2    |

下面是我想要得到的结果:

| Column 1 | Column 2 | Column 3 |
 | Name     | 71       | Item1    |
 | Name2    | 77       | Item1    |
 | Name3    | 75       | Item1    |

任何帮助或指向正确的方向都将是惊人的!
谢谢

06odsfpq

06odsfpq1#

我建议:

select t.column1, min(t.column2) as column2, min(t.column3) as column3
from t
where column3 = 'Item1'
group by t.column1;

这将为中的每个值返回一行 column1 ,最小值为 column2 哪里 column3'Item1' .

ybzsozfc

ybzsozfc2#

您必须选择列2中显示的数据;如果你想随机选择,你可以这样做:

SELECT Column1, Column2, Column3  FROM table WHERE column3 LIKE 'Item1' GROUP BY Column1

编辑:如果要在第2列上使用聚合函数生成随机值,可以执行以下操作:

SELECT Column1,
       SUBSTRING_INDEX(GROUP_CONCAT(Column2 order by rand()), ',', 1) AS Column2,
       Column3
FROM table
WHERE column3 LIKE 'Item1'
GROUP BY Column1
vq8itlhq

vq8itlhq3#

从所需的输出,我认为,下面的查询将完成这项工作

SELECT c1, c2, c3  
FROM t
WHERE c3 LIKE 'i1'
  and c2 in (select min(c2) from t group by c1)

sql小提琴

相关问题