我有带有以下各列的社区表,如下所示:
我需要以某种方式按“ ftr_order”和“ isFeatured”列对表进行排序,以便它按以下顺序显示数据:
ftr_order | isFeatured
2 | yes
1 | no
2 | no
3 | no
4 | no
5 | no
6 | no
0 | no
NULL | no
NULL | no
NULL | no
ftr_order应该按升序对数据进行排序。 0和NULL值应位于表的底部。
我已经尝试了以下查询,这在某种程度上解决了它,但是我需要设置优先级,即
i)第一优先级:如果isFeatured为yes,则将其显示在顶部。
ii)第二优先级:按升序对ftr_order进行排序
**注意:如果ftr_order为0或NULL,则在底部显示数据。
SELECT * FROM community ORDER BY if(ftr_order = 0 or ftr_order is null,1,0), ftr_order ASC, community_description ASC
这将显示以下输出:
在这里,您可以看到ftr_order的排序正确,但这里缺少一件事,ID号7应该列在表的顶部,因为该行的isFeatured ='yes'列。为了使该行位于顶部,我尝试通过写下查询来解决该问题:
SELECT * FROM community ORDER BY if(ftr_order = 0 or ftr_order is null,1,0 or isFeatured='yes'), ftr_order ASC, community_description ASC
您可以看到生成了以下输出,还可以分析仍然存在哪些问题。 ID号7应该在表格的顶部列出,但是ID号7在表格的底部列出。
因此,我需要将其移到顶部。请帮助我解决此问题。提前致谢!
最佳答案
SELECT * FROM community ORDER BY isfeatured desc,ftr_order ASC,community_description ASC
如果isfeatured仅是/否,可以尝试这样