0

作为查询的结果,我拥有以下内容,您可以看到它除了相关列之外还有一些重复项。我想要的是删除重复项,而相关列从相关 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
4

2 回答 2

1

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

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

现场演示。

于 2013-08-01T19:37:30.110 回答
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
于 2013-08-01T20:25:16.093 回答