我正在使用一个数据库,最终用户可以上传其收藏品和其他效果的照片,根据其中一个标准,他们可以添加条目是产品的条件(薄荷,薄荷,优质等)。如果我想按条件对这些条目进行排序,它将按字母顺序对其进行排序,但这与实际的按条件排序不对应。例如,E(优秀)将出现在M(薄荷)之前,当优秀比薄荷更差时。
如何为我的数据库中的这些字母指定值,因此在排序时,它们将按照非字母顺序显示,但按实际等级显示(M> NM> E> G> P)。
答案 0 :(得分:6)
将case语句添加到order by子句中。这是一些伪sql:
SELECT * FROM COLLECTIBLES
ORDER BY CASE condition
WHEN 'EXCELLENT' THEN 1
WHEN 'MINT' THEN 2
WHEN 'NEAR MINT' THEN 3
ELSE 4
END
答案 1 :(得分:2)
为什么不简单地在数据库中使用ie数字?我的意思是你可以使用1代表薄荷,2代表薄荷,3代表优秀,等等。
答案 2 :(得分:1)
您可能会考虑另一个管理产品条件的表:
CREATE TABLE product_condition
(
product_condition_id INT,
grade char(2),
grade_sequence int
)
INSERT INTO product_condition VALUES (1, 'NM', 1)
INSERT INTO product_condition VALUES (2, 'M', 2)
INSERT INTO product_condition VALUES (3, 'E', 3)
INSERT INTO product_condition VALUES (4, 'G', 4)
INSERT INTO product_condition VALUES (5, 'P', 5)
使用product_condition_id替换product表中的实际成绩列。
SELECT *
FROM product p
JOIN product_condition pc on p.product_condition_id = p.product_condition_id
ORDER BY grade_sequence
我怀疑等级值相当稳定,但使用表格可以更轻松地进行更改。