我有一个有8000条记录的表,我想从这个表中随机选择一些记录(例如10条)。这些记录必须与以前选择的记录不同。例如,通过这个查询,我选择了一些问题:
SELECT coloumn1,column2 FROM `myTable` WHERE `status`=1 AND `group`=6 ORDER BY RAND() LIMIT 0, :max
现在,我如何随机选择新记录并与以前选择的记录不同?
tquggr8v1#
尝试:从中选择Column1,column2 myTable 哪里 status =1和 group =6且Column1不在(id,id,id,id,id,id在php中串联)顺序中,按rand()限制0,:max在select中,最好选择一个列作为行的唯一标识符,并将该列与notin()一起使用避免使用rand(),因为它非常慢-最好使用php来解决它如果所选记录的数目太大,请将它们放入临时表中,然后使用不在(从临时表中选择id…)
myTable
status
group
qyzbxkaa2#
您只需存储以前选择的记录的id,然后添加到下一个查询中,如下所示,以避免选择它们两次:
WHERE id NOT IN = (list of ids)
根据你的例子:
SELECT coloumn1,column2 FROM `myTable` WHERE `status`=1 AND `group`=6 AND id NOT IN (_IDS_) ORDER BY RAND() LIMIT 0
2条答案
按热度按时间tquggr8v1#
尝试:从中选择Column1,column2
myTable
哪里status
=1和group
=6且Column1不在(id,id,id,id,id,id在php中串联)顺序中,按rand()限制0,:max在select中,最好选择一个列作为行的唯一标识符,并将该列与notin()一起使用
避免使用rand(),因为它非常慢-最好使用php来解决它
如果所选记录的数目太大,请将它们放入临时表中,然后使用
不在(从临时表中选择id…)
qyzbxkaa2#
您只需存储以前选择的记录的id,然后添加到下一个查询中,如下所示,以避免选择它们两次:
根据你的例子: