$info = $goods ->select()//获得数据信息
print_r($info)//打印信息
SELECT * FROM ((SELECT * FROM user as is_m WHERE is_m.isMember = '1') UNION ALL (SELECT * FROM user as not_is WHERE not_is.isMember = '0' ORDER BY RAND() LIMIT 10 )) as t ORDER BY t.id DESC LIMIT 10, 20"这是雏形,你可以进行优化。
拆分详解:
(SELECT * FROM user as is_m WHERE is_m.isMember = '1') 这个括号中,是查询会员,这个不用多说,你应该明白,至于为什么要加别名,同表多次查询自然要加别名以区分;
(SELECT * FROM user as not_is WHERE not_is.isMember = '0' ORDER BY RAND() LIMIT 10 )这个括号中,是查询非会员,其中ORDER BY RAND() LIMIT 10是关键,它的意思就是从中随机取十个结果;
SELECT * FROM (会员 UNION ALL非会员) as t ORDER BY t.id DESC LIMIT 10,20。这里即用到了联合查询UNION ALL,也用到了子查询,把联合查询的结果作一个结果集,然后从中进行查询,查询这个结果集的时候,使用ORDER BY和LIMIT进行分页处理。
以上,就是该语句的详解了,当然,其中也需要你做一些处理。
比如要先进行判断会员数满没满三十个,满了则无需如此,直接使用会员,没满则计算出还差多少个,在查询非会员那里LIMIT 数字才好使用;
至于分页,这个又是另一个问题了,你应该知道怎么分页的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)