我有一个带有排序过滤器的列表。根据参数,我希望它在顶部显示该参数的收藏夹,同时保持它们按名称排序(如果值相同):
示例 1:从 A-Z 订购
示例 2:从最后一张发票开始的订单
我试过了
`ORDER BY
favorite ${sortDirection}, name ${sortDirection}`
还有
`ORDER BY
favorite DESC,
CASE WHEN favorite = 1 THEN ${orderBy} END ${sortDirection},
CASE WHEN favorite = 1 THEN name END ASC,
CASE WHEN favorite = 0 THEN ${orderBy} END ${sortDirection},
CASE WHEN favorite = 0 THEN name END ASC
`;
${sortDirection}
可以是 ASC 或 DESC。但在这种情况下,收藏夹按从 true 到 false 的顺序显示,并且它们不会按名称从 A 到 Z 排序,但它们的顺序与数据库行中的顺序相同。
对于第一个例子,我认为你想要类似的东西:
SELECT *
FROM yourTable
ORDER BY
CASE WHEN name LIKE 'Alissa%' OR name LIKE 'Frank%' OR name LIKE 'Jessica%'
THEN 1 ELSE 2 END,
name;