我正在使用数据库,最终用户可以上传他们的收藏品和其他效果的照片,并且在其中一项条件下,他们可以添加条目是产品的条件(近薄荷,薄荷,优秀等)。如果我想按条件对这些条目进行排序,它将按字母顺序排序,但这不符合实际按条件排序。例如,E(优秀)将出现在M(薄荷)之前,当优秀比薄荷更糟。设置非典型排序顺序
如何为我的数据库中的这些字母赋值,以便排序时它们将以非字母顺序显示,但按实际等级显示(M> NM> E> G> P)。
我正在使用数据库,最终用户可以上传他们的收藏品和其他效果的照片,并且在其中一项条件下,他们可以添加条目是产品的条件(近薄荷,薄荷,优秀等)。如果我想按条件对这些条目进行排序,它将按字母顺序排序,但这不符合实际按条件排序。例如,E(优秀)将出现在M(薄荷)之前,当优秀比薄荷更糟。设置非典型排序顺序
如何为我的数据库中的这些字母赋值,以便排序时它们将以非字母顺序显示,但按实际等级显示(M> NM> E> G> P)。
向order by子句添加一个case语句。下面是一些伪SQL:
SELECT * FROM COLLECTIBLES
ORDER BY CASE condition
WHEN 'EXCELLENT' THEN 1
WHEN 'MINT' THEN 2
WHEN 'NEAR MINT' THEN 3
ELSE 4
END
非常好,这个工作令人难以置信。我仔细研究了一下,不知道如何在'WHEN'复合体之后改变顺序,但是在'END'结尾处加上'ASC'或'DESC'给了我一个选项。高超! – gator
@riista很高兴我能帮到你。 –
为什么不简单地使用数据库中的数字?我的意思是你可以使用1为近薄荷,2为薄荷,3为优秀等等。
你可能会认为,管理产品的条件另一个表:
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 。
SELECT *
FROM product p
JOIN product_condition pc on p.product_condition_id = p.product_condition_id
ORDER BY grade_sequence
我怀疑等级值是相当稳定的,但用表格可以更容易地进行更改。
mint = 1,接近mint = 2,excelent = 3,good = 4? –