这是从单个表中进行的简单选择。目的是随机选择四种产品,从 x 个类别中的每个类别中选择一种,并有一些“位置”限制。我试过这个:
SELECT pName,
pID
from products
WHERE pDisplay=1
AND pFeatured=1
GROUP BY pCategory
ORDER BY RAND()
LIMIT 0,4
这种方法可行,但它总是从任何给定类别返回相同的产品。我想改变所显示的产品,同时仍然只显示任何给定类别的单一产品。
我也尝试过:
SELECT DISTINCT(pCategory)
pName,
pID
from products
WHERE pDisplay=1
AND pFeatured=1
ORDER BY RAND()
LIMIT 0,4
我想也许它需要两次选择 - 第一个选择随机 4 个类别,第二个选择从每个类别中随机选择一行,但是 a.我不知道该怎么做,并且b。如果可能的话,更愿意使用单个查询。
不太好,但我认为这是 MySQL 中能做的最好的事情。
SELECT p.pID, p.pName
FROM (
SELECT (
SELECT pID FROM products
WHERE pCategory=p.pCategory AND pDisplay=1 AND pFeatured=1
ORDER BY rand() LIMIT 1
) AS pID
FROM products p
WHERE pDisplay=1 AND pFeatured=1
GROUP BY pCategory
ORDER BY rand() LIMIT 4
) c
JOIN products p ON c.pID = p.pID
(karim79 的查询可以返回同一类别的多个产品,甚至可能返回 pDisplay=0 或 pFeatured=0 的产品。rexem 的查询处理 pDisplay/pFeatures 问题,但也可以返回同一类别的多个产品)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)