我目前有以下产品表:
Product
_______
id, INT
name, String
featured, ENUM(Y, N)
Run Code Online (Sandbox Code Playgroud)
如果上面有特色产品,我会退回该项目.如果以上都不是特色,我将返回其中任何一个.我目前有以下查询功能:
SELECT *
FROM Product
WHERE (featured = 'Y' OR featured = 'N')
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
有没有人对上面的SQL有任何异议,有点感觉不对?如果是这样,最好的方法是什么?以上是更大查询的最简单情况.我可以使用ORDER BY功能,但它没有做任何事情将特色产品推到我的列表顶部.
这应该做到这一点.您将'Y'值强制到列表顶部.
SELECT *
FROM Product
ORDER BY CASE WHEN featured = 'Y' THEN 0 ELSE 1 END
LIMIT 1
Run Code Online (Sandbox Code Playgroud)