假设我有一个这样的表,
unqiue_data int(10),
not_unique_data int (10)
unique_data not_unique_data
1 1
2 1
3 2
4 2
5 2
select * from some_table order by not_unique_data DESC;
我需要做的是随机化这个SELECT查询,但是我只能通过两种特殊的方式来弄清楚如何做。首先,我希望将unique_data随机化,以便SELECT查询可以返回类似(随机)的内容:
unique_data not_unique_data
2 1
1 1
4 2
3 2
5 2
我的第二个要求是,unique_data多次出现,但是按照特定的顺序。
在一个理想的世界中,我需要的是它可以返回类似
的东西unique_data not_unique_data
4 2
3 2
5 2
1 1
2 1
3 2
5 2
4 2
2 1
1 1
5 2
4 2
3 2
我的意思是,我需要它以便每个unique_data(4,3,5),(3,5,4),(5,4,3)每组的第一个数字只出现一次仍由not_unique_data订购。
任何人都知道如何做到这一点?非常感谢帮助!
谢谢!
答案 0 :(得分:0)
我认为你正在寻找这个https://stackoverflow.com/a/3990479/2552551
SELECT * FROM
(
SELECT * FROM some_table
ORDER BY not_unique_data DESC
LIMIT 100
) T1
ORDER BY RAND()
答案 1 :(得分:0)
对于这个问题,您必须确保100个与产品相关的产品
我们可以使用临时表来执行此操作
SELECT unique_data, not_unique_data, 0
INTO temp_newtable
FROM some_table
ORDER BY RAND()
现在我们将获得一个随机组织的表格,默认情况下看到= 0(看到知道它已经出现在该产品中)
unique_data not_unique_data seen
4 2 1
3 2 1
5 2 0
1 1 0
2 1 0
3 2 1
因此,每当与产品相关的某些产品出现在页面上时,您需要将看到的列更新为1,当您离开此表时会截断并生成随机数据以便再次使用