我有一个项目表:
id | name | is_featured
1 name1 false
我需要以随机方式显示此表中的项目,但首先是is_featured。规则是:
is_featured=True
> 6,那么获取is_featured=True
all,并随机化并获得前6is_featured=True
<6,则获取所有is_featured=True
,并随机化计算有多少缺失最多6个。从非特征随机获取剩余项目。单位列表。我在数据库中的2-3个步骤中执行此操作:
可以在数据库中一步完成吗?
你似乎想要六行,首先是is_featured
。您可以一步完成:
select i.*
from items i
order by i.is_featured desc, -- true is first
random()
fetch first 6 rows only;
也就是说,首先使用is_featured
对所有数据进行排序。然后选择前六个。