删除重复的结果,同时为一列获取随机值

时间:2013-08-01 19:24:31

标签: mysql

我所拥有的是以下作为查询的结果,因为您可以看到除了相关列之外它有一些重复。我想要的是删除重复项,而相关列从相关ID的可能值中获取随机值。

类似于:

 id  | name | related
-----+------+-----
   1 | bart | 2
   1 | bart | 5
   1 | bart | 7
   2 | john | 3
   2 | john | 4
   3 | mary | 2

变成类似的东西:

 id  | name | related
-----+------+-----
   1 | bart | 5
   2 | john | 3
   3 | mary | 2

2 个答案:

答案 0 :(得分:1)

您可以使用 ORDER BY RAND() 的子查询,然后对结果使用GROUP BY name

SELECT id,name,related 
  FROM (
           SELECT * 
             FROM myTable 
         ORDER BY RAND()
       ) AS result 
GROUP BY name

<强> Live DEMO.

答案 1 :(得分:0)

如果您只想要第一个相关数字而不一定是真正随机相关的数字,您可以这样做:

select distinct t.id, t.name, t2.related 
from tester t 
inner join 
    (select id, related from tester group by id, name) t2 on t.id=t2.id