SELECT BY" Blocks"一个领域。可能吗?

时间:2014-04-07 15:26:02

标签: php mysql sql

我对这个我想要做的查询感到疯狂。  我有谷歌它,论坛但不幸的是没有运气找到解决方案。

让我解释一下我想要实现的目标:

我有这张桌子:

+----------+-------------+
|Advert_Id | Advert_Type |
+----------+-------------+ 
|       1  | 1           |
|       2  | 3           |
|       3  | 1           |
|       4  | 2           |
|       5  | 2           |
|       6  | 3           |
|       7  | 1           |
|       8  | 1           | 
|       9  | 1           | 
|      10  | 1           | 
|      11  | 1           | 
|      12  | 1           | 
+----------+-------------+ 

我需要什么:

在“BLOCKS”OF 4中选择 RAND Advert_Id ,其中 ORDER BY Advert_Type (从3到1,例如3,2,1和1)  因此,firt块将是3,2,1,1秒块3,2,1,1等等......

期望输出应为:

+----------+-------------+ 
|Advert_Id | Advert_Type | 
+----------+-------------+ 
|        2 | 3           |
|        4 | 2           |
|        9 | 1           |
|       12 | 1           |
|        6 | 3           |
|        5 | 2           |
|        1 | 1           |
|        8 | 1           |
|       10 | 1           | 
|        3 | 1           | 
|       11 | 1           | 
|        7 | 1           | 
+----------+-------------+ 

我想要实现的是:我有一个包含大量广告的表ADVERT,因此每个广告的类型为ADVERT_TYPE(1,2或3)。 所以我需要在我的网站上显示一个广告类型3,然后是另一个广告类型2,然后是另外两个广告类型1.正如您所看到的,我们有四个广告块。同样适用于其他人。 但正如你在我的桌子上看到的那样。我有更多的广告与类型1,所以它将重复,直到我显示所有。

再次感谢,

1 个答案:

答案 0 :(得分:0)

我不确定你能在MySQL中完全像这样做吗

在MySQL

之后,有两种方法可以解决这个问题

1)在查询

之后以编程方式执行

例如。将所有Advert_Type = 3加载到一个数组中,将All 2加载到一个数组中,将所有1加载到另一个数组中并合并它们。

2)在你的表中添加一个级别字段,然后按级别排序(当然,你可能希望的任何随机性都会从窗口中消失)