我有一张桌子,我尝试检索一定数量的随机条目,我想在顶部放置一个类别的特定最大条目数,然后是一定数量的另一个类别。
如果第一个类别中没有条目,则允许的条目数将添加到2sd类别的条目数中。
例如,我的表有3个类别(类别:'完整','部分','空')。我想总共显示12个条目。
对于“完整”类别,我想显示8.然后显示3个部分,最后1个空。
如果小于8完成,假设有5,那么它将显示5个完整,6个部分和1个空。 (缺少3个完整,所以3个基础部分+ 3个额外部分= 6)。
要做什么的查询?
这是我实际拥有的查询:
SELECT *
FROM items
ORDER BY category='complete' DESC, category='partial' DESC, category DESC, RAND() ASC
LIMIT 12
上述查询的问题在于它完成了12次,并不完全符合我的要求。
答案 0 :(得分: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)