分组查询原理都是SQL的分组查询,THINKPHP中只是用到他自己的一些自定义的方法!比如
join()、group()、having()方法等,实际对应的也是SQL里的这些关键字!
例如本次需求是要按照cid进行分组,按照通常的做法是 SELECT * FROM 表名 GROUP BY
cid,这样就能按照cid进行分组筛选!然后使用THINKPHP的时候则使用 M('表名')->group('cid')->select()
实际生成的语句和原始SQL代码是一样的。
join通常有下面几种类型,不同类型的join *** 作会影响返回的数据结果。
INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
其实我感觉你这个逻辑没问题,代码有点问题,我是这么认为的,代码应该是这样$idzhi = rand(0,表中数据条数)
$data = $data['id']// 我不明白你这里是什么意思
$arr = $m->where($data >= $idzhi)->limit(8) ->select()
不过我总感觉上面的有问题
$idzhi = rand(0,表中数据条数)
$arr = $m->where("id >= $idzhi")->limit(8) ->select()
不对的话就试试这个,我个人觉得这样是对的,不明白你那个$data['id']是干嘛用的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)