按一个字段分组并在MySQL中按rand命令另一个字段

时间:2014-06-16 10:44:11

标签: mysql join

我有一个表,其中有两列:parent_column和child_column

这是我想要实现的目标: 我想显示父列的计数以及随机子。我尝试了内部查询,但这并没有使我的工作。

这是我的表:

Child          PARENT
1               55
2               55
3               55

这就是我想要的: 在第一次刷新时

parent count  child
55       3      3

第二次刷新

parent count  child
55       3      2

依旧......

我试过这个

SELECT t1.parent, count(*) count, t2. child
FROM t1
INNER JOIN (
SELECT parent, child
FROM t2
ORDER BY RAND()
) t2 on t2.parent = t1.parent
GROUP BY t1.parent
LIMIT 25

修改 这是一个现实世界的场景: 上表是产品,每个产品都有父母。我想要实现的是: 我想在前端展示5款产品。 每个产品都应该有一个独特的父母。另一个复杂性是,在每次刷新页面时,应更改此产品,因为父级可以拥有多个产品。 任何帮助将不胜感激

演示 在第一次刷新

Product Company
P1234   Samsung
P5555   LG

第二次刷新

Product Company
P2345   Samsung
P5123   LG

由于

2 个答案:

答案 0 :(得分:1)

这样做你想要的吗?

SELECT t1.parent,
       (select count(*) from t2 where t2.parent = t1.parent) as count,
       t2. child
FROM t1
ORDER BY RAND()
LIMIT 25;

我真的没有在外部查询中看到聚合的目的。

答案 1 :(得分:1)

尝试这种方式:

select t1.parent, count(*), 
       ( select child
           from test t2
          where t2.parent = t1.parent
           order by rand()
           limit 1 ) child
from test t1
group by t1.parent;

在sqlfiddle上查看:http://sqlfiddle.com/#!2/4860c/3