刚才问了一个随机选取记录的问题,用下面的语句可以随机选取一条记录select 名称
from (select * from tb order by rand())T
group by 日期想再问下,如果日期相同记录里要随机选取两条,或指定条数,用group by似乎就不行了吧,像这样的表名称 日期
id1 22号
id2 22号
id3 22号
id4 23号
id5 23号
id6 23号
id7 24号
id8 24号
id9 24号
from (select * from tb order by rand())T
group by 日期想再问下,如果日期相同记录里要随机选取两条,或指定条数,用group by似乎就不行了吧,像这样的表名称 日期
id1 22号
id2 22号
id3 22号
id4 23号
id5 23号
id6 23号
id7 24号
id8 24号
id9 24号
SELECT * FROM AA A1 WHERE 2>(SELECT COUNT(*) FROM AA WHERE A1.日期=日期 AND
A1.ID<=ID)
select 名称
from (select * from tb order by rand())T
group by 日期
结果插入有自增字段的临时表再取2条
union all
select * from tb where 日期='23' order by rand() limit 2
union all
select * from tb where 日期='24' order by rand() limit 2;
A1.ID<=ID是什么意思
2>SELECT COUNT(*) FROM AA WHERE A1.日期=日期 AND A1.ID<=ID是什么意思我试着把语句SELECT *,COUNT(*) FROM AA WHERE A1.日期=日期 AND A1.ID<=ID放到数据库里运行了一下,得到的是id 名称 日期 count(*)
9 id9 24号 9为什么2要大于9请问我要了解哪些知识才能理解,问题很弱智,请指点下我这个菜鸟,谢谢
A1.ID<=ID)
这句我运行了得到的是选取了每个相同日期值里的一条记录,所以我改成了2>=(select....)
这样就得到了每个相同日期值里的2条记录WWWWA在3#说的加入随机意思也不理解
select 名称 from (select * from tb order by rand()) group by 日期
的结果不就是不同日期的一组随机记录吗
A1.ID<=ID)
如果用这种方法 需要把表随机的插入到一张有自增id的临时表里create table temp(id int not null auto_increment parimary key,a int,b varchar(10)));
insert into temp(a,b) select * from tb order by rand();
SELECT * FROM temp temp WHERE 2>(SELECT COUNT(*) FROM temp WHERE A1.b=b AND
A1.ID<=ID)
select 名称
from (select * from tb order by rand())T
group by 日期
结果插入有自增字段的临时表,再用
SELECT * FROM AA A1 WHERE 2>(SELECT COUNT(*) FROM AA WHERE A1.日期=日期 AND
A1.ID<=ID)取2条