【问题标题】:Order Results by a Column’s Rows按列的行排序结果
【发布时间】:2019-05-26 10:34:32
【问题描述】:

this thread 中被选为最佳答案的回复很有帮助。但是,SQLite 似乎不支持“ORDER BY FIELD”。

使用this example,如何设置月份列中的行的特定顺序?

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    SQLite 中没有ORDER BY FIELD
    相反,您可以使用条件排序来做到这一点:

    ORDER BY CASE month
        WHEN 'JAN' THEN 1
        WHEN 'FEB' THEN 2
        WHEN 'MAR' THEN 3
        WHEN 'APR' THEN 4
        WHEN 'MAY' THEN 5
        WHEN 'JUN' THEN 6
    END 
    

    或使用INSTR():

    ORDER BY INSTR('JAN,FEB,MAR,APR,MAY,JUN', month)
    

    您可以省略逗号或替换为任何其他分隔符。

    【讨论】:

    • 接缝当我阅读文档 SQLite INSTR 时,它接缝并没有完全替代 MySQL 的 FIELD... Seams INSTR 不适用于 FIELD 可以使用的数字数据类型,但我知道SQLite 是一个松散类型的数据库,就像 MySQL 一样。SQLite 开发人员很可能忘记在手册中提到该函数最有可能使用数字数据类型。
    • INSTR 是一个字符串函数。我用它来模拟FIELD的方式只是一个技巧。但它也适用于数值:select instr('15,25,35', 25) 将返回 4。
    • 是的,(两个)输入参数只是字符串,而不仅仅是 MySQL 的“无尽”参数 FIELD 输入..
    猜你喜欢
    • 2013-09-08
    • 2018-03-14
    • 1970-01-01
    • 2018-07-25
    • 2023-03-28
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多