我有一个在线商店,会员可以订阅3个包中的任何一个(1,2和3)。以下是Products DB表的示例。
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产品。因此,没有特定的项目总是在顶部,而有些项目总是在底部。
如何编写语法?
答案 0 :(得分:1)
可以通过执行以下操作,仅使用SQL随机对products列进行排序:
$get_products = mysql_query("SELECT * FROM products WHERE status='1' ORDER BY package DESC, RAND()");
但是,请记住" RAND()"在MySQL中可能会很慢,尤其是如果您的列没有编入索引。
请参阅以下链接以供参考:
MySQL: Alternatives to ORDER BY RAND()
答案 1 :(得分:0)
首先,在您提取查询结果时,按产品分组将产品分组:
while ($row = $result->fetch_assoc()) {
$packages[$row['package']][] = $row;
}
然后在输出组之前随机播放:
foreach ($packages as $package_products) {
shuffle($package_products);
foreach ($package_products as $product) {
// output product
}
}