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