SQL随机和重复的顺序?

时间:2014-09-26 06:19:38

标签: mysql sql mysqli

假设我有一个这样的表,

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订购。

任何人都知道如何做到这一点?非常感谢帮助!

谢谢!

2 个答案:

答案 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,当您离开此表时会截断并生成随机数据以便再次使用