我有一个Items表:
id | name | is_featured
1 name1 false
该表中的项目我需要以随机方式显示,但首先要具有功能。规则是:
如果计数is_featured=True
> 6,则全部获得is_featured=True
,然后随机分配并获得前6个
如果计数is_featured=True
<6,则全部获得is_featured=True
并随机分配
计算不超过6个的失踪人数。从无特征的随机项中获取剩余的item.Unite列表。
我需要在数据库中执行2-3个步骤:
是否可以一步一步在数据库中做到这一点?
答案 0 :(得分:1)
您似乎想要六行,首先是is_featured
。您可以一步完成此操作:
select i.*
from items i
order by i.is_featured desc, -- true is first
random()
fetch first 6 rows only;
也就是说,首先使用is_featured
对所有数据进行排序。然后选择前六个。