php 从不同type的数据中,各随机抽取30条,组成一条数据

Joy卷菜 发布于 2016/02/29 18:49
阅读 179
收藏 0
我是这样子写的,但是每次每种类型只能出一条数据,不会一个类型出现30条,请大神指点,谢谢!!

$query = $_SGLOBAL['db']->query('select * from (select * from '.tname('tiku').' order by rand())t where cat_id=1 group by type limit 0,30');

while ($value = $_SGLOBAL['db']->fetch_array($query)) {

    $aa[] = $value;

}


print_r($aa);

结果如下:
Array
(
    [0] => Array
        (
            [id] => 1091
            [type] => 1
        )

    [1] => Array
        (
            [id] => 3082
            [type] => 2
        )

    [2] => Array
        (
            [id] => 4084
            [type] => 3
        )

)
一个type都只有一条数据
加载中
0
山里的孩子
山里的孩子
没看清楚就埋头测试了。。。
其实你是没理解group by。 group by type的意思其实就是每一种type只取第一条记录。
山里的孩子
山里的孩子
回复 @Xericoder : 但是有group by的话,limit的是分组的数量,而不是每组的数量
山里的孩子
山里的孩子
回复 @Joy卷菜 : 你可以用group_concat(`id`)
Joy卷菜
Joy卷菜
哦~受教了,我改改,谢谢你
0
Joy卷菜
Joy卷菜
自己顶啊,不要沉,就卡在这个问题了
0
Tuesday
Tuesday
一条sql估计实现不了
Tuesday
Tuesday
回复 @Joy卷菜 : 嗯, 三条优化好, 其实也是非常好的.
Joy卷菜
Joy卷菜
我写了三条了,不用一条了,弄个笨办法
0
山里的孩子
山里的孩子

group by 放到子查询

Joy卷菜
Joy卷菜
回复 @Xericoder : type的种类总共是3个
山里的孩子
山里的孩子
回复 @Joy卷菜 : 我测了一个,你原来的SQL是可用的。 首先你要确保cat_id为1的type种类大于3个,然后再试一次。
Joy卷菜
Joy卷菜
刚才试了一下,还是一样的
返回顶部
顶部