我的字段存储是/否值,名称为SelectionFavorite
我希望像
一样获取记录首先包含SelectionFavorite
值的所有记录和其他剩余记录
我做了一些像
这样的查询SELECT p.Id,
p.NameLatin,
p.NameEnglish,
cm.DescriptionEnglish,
p.SelectionFavorite,
p.SelectionGarden,
p.SelectionPerso1,
SelectionPerso2,
SelectionPerso3
FROM plant p
INNER JOIN CategoryMain cm ON p.CategoryMain = cm.id
ORDER BY (p.SelectionFavorite=yes)
但是只返回那些具有“是”值的记录。
我想要这种类型的结果
Id NameLatin NameEnglish DescriptionEnglish SelectionFavorite .....
1 name1 eng1 desc1是是是否否
2 name2 eng2 desc2是是是否否
3 name3 eng3 desc3是是是否否
4 name4 eng4 desc4是是是否否
5 name5 eng5 desc5是是是否否
6 name6 eng6 desc1 no yes yes no no
7 name7 eng7 desc2 no yes yes no no
8 name8 eng8 desc3 no yes yes no no
9 name9 eng9 desc4 no yes yes no no
如何解决此问题?
答案 0 :(得分:4)
将“是”值首先置于其他值之后的order by
子句是:
ORDER BY (p.SelectionFavorite = 'yes') desc
您的查询不应该过滤掉任何内容,尽管它会将非yes值放在第一位。
答案 1 :(得分:2)
您可以使用这样的解决方案:
SELECT p.Id,
p.NameLatin,
p.NameEnglish,
cm.DescriptionEnglish,
p.SelectionFavorite,
p.SelectionGarden,
p.SelectionPerso1,
SelectionPerso2,
SelectionPerso3
FROM plant p
INNER JOIN CategoryMain cm ON p.CategoryMain = cm.id
ORDER BY CASE p.SelectionFavorite WHEN 'yes' THEN 1 ELSE 2 END;