gpt4 book ai didi

sql - 从一列中选择随机行但不重复值

转载 作者:可可西里 更新时间:2023-11-01 08:38:24 24 4
gpt4 key购买 nike

这是从单个表中进行的简单选择。目的是选择四种随机产品,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 问题,但也可以返回同一类别的多个产品)

关于sql - 从一列中选择随机行但不重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1512542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com