php - 如何以特定顺序随机显示类别

标签 php mysql random

我有一个在线商店,成员(member)可以在其中订阅 3 个套餐(1、2 和 3)中的任何一个。下面是产品数据库表的示例。

id    package          product       status
1     3                  Biro          1
2     1                  Paper         1
3     3                  Pin           0
4     2                  Eraser        1
5     2                  Blade         1
6     3                  Bag           1
7     2                  Pen           0
8     1                  Sharpener     1
9     1                  Shoe          1
10    2                  Chair         1

我先展示了 3 个产品的包装,然后是 2 个产品的包装,最后是 1 个产品的包装,这样;

$get_products = mysql_query("SELECT * FROM products WHERE status='1' ORDER BY package DESC");

但我真正想做的是先随机显示所有套餐 3 产品,然后随机显示套餐 2 产品,最后随机显示套餐 1 产品。因此,没有特定的项目将始终位于顶部,而有些项目将始终位于底部。

语法怎么写?

最佳答案

通过执行以下操作,可以仅使用 SQL 对产品列进行随机排序:

$get_products = mysql_query("SELECT * FROM products WHERE status='1' ORDER BY package DESC, RAND()");

但是,请记住在 MySQL 中通过“RAND()”排序可能会很慢,尤其是当您的列未被索引时。

引用以下链接:

MySQL: Alternatives to ORDER BY RAND()

How can i optimize MySQL's ORDER BY RAND() function?

mysql order by rand() performance issue and solution

关于php - 如何以特定顺序随机显示类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38755019/

相关文章:

mySQL 返回可能重复的随机行

php - 序列化、反序列化、添加元素并再次序列化

php - 单击“保存”按钮时,如何使用 PHP 将文本区域中的文本保存到 MySQL 数据库中?

php - 如何在将Excel导入mysql时修剪前导空格

php - cakephp 的模型关联问题

arrays - 在ruby中获取数组的随机非重复元素

php - 奏鸣曲管理包 : possible to add a child admin object that can have different parents?

php - CActiveForm beforeValidate 不适用于 afterValidate

mysql子查询只返回一行

python - 如何从 Tensorflow 中的字符串张量中随机删除空格