我有一个表,我尝试检索一定数量的随机条目,我希望将某个类别的条目的最大数量放在顶部,然后是另一个类别的特定数量。
如果在第一类别中没有条目,则其所允许的条目数量将被添加到2sd类别的条目数量。
例如,我的表有3个类别(类别:'complete','partial','empty')。我想总共显示12个条目。
对于"complete“类别,我想显示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个完成,而这并不完全是我想要的。
发布于 2012-07-04 23:52:39
您可以使用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)https://stackoverflow.com/questions/11332148
复制相似问题