0

我有一张表,我尝试检索一定数量的随机条目,并且我想将某个类别的某个最大条目数放在顶部,然后是另一个类别的一定数量。

如果第一个类别中没有条目,则将其允许的条目数添加到 2sd 类别的条目数中。

例如,我的表有 3 个类别(类别:“完整”、“部分”、“空”)。我想总共显示 12 个条目。

对于“完整”类别,我想显示 8。然后显示 3 个部分,最后 1 个为空。

如果少于 8 个完整,假设有 5 个,那么它将显示 5 个完整、6 个部分和 1 个空。(缺少 3 个完整的,所以 3 个基本部分 + 3 个额外的 1 = 6)。

这样做的查询是什么?

这是我实际有的查询:

SELECT *
FROM items
ORDER BY category='complete' DESC, category='partial' DESC, category DESC, RAND() ASC
LIMIT 12

上述查询的问题是它完成了 12 次,这并不是我想要的。

4

1 回答 1

0

您可以使用USION DISTINCT语句。

试试这样:

(SELECT * FROM items WHERE category = "complete" LIMIT 8)
UNION DISTINCT (SELECT * FROM items WHERE category = "partial" LIMIT 3)
UNION DISTINCT (SELECT * FROM items WHERE category = "" LIMIT 1)
于 2012-07-04T15:52:39.163 回答