在SQLite中不同方向的不同列上的ORDER BY

在SQLite中不同方向的不同列上的ORDER BY,第1张

概述我有一个表定义如下: CREATE TABLE bar_table ( _id INTEGER NOT NULL PRIMARY KEY, index INTEGER NOT NULL DEFAULT '65535', _date DATE ) 我的基本选择陈述是: SELECT * FROM bar_table ORDER BY <your 我有一个表定义如下:
CREATE table bar_table (        _ID INTEGER NOT NulL PRIMARY KEY,index INTEGER NOT NulL DEFAulT '65535',_date DATE    )

我的基本选择陈述是:

SELECT * FROM bar_table ORDER BY <your-clause-here>

如何通过索引升序和日期降序来订购我的选择?即小指数出现在大型指数之前.如果两个索引相同,则较晚的日期将首先出现.

文档指向我对ColLATion,但我不确定那是什么.

虽然我知道你已经在这里找到了自己的答案,但我认为在这里详细介绍这些细节是至关重要的.

首先,order by子句按指定的列或表达式的顺序排列.在这种情况下:

order by index asc,_date desc

从索引最小到最大(升序),然后_date从最大到最小(降序)排序.虽然asc是默认值,但是当我有多个列朝向相反的方向时,我通常会包含它,就像你在这里一样.

您还可以通过以下方式在订单中包含表达式:

order by case when index < 0 then 1 else 0 end desc,_date desc

这会将所有负索引行放在顶部,然后按_date对它们进行排序.在某些情况下,在order by子句中使用表达式非常有效.

现在,你提到了collation,对于那是什么有点混乱.整理是数据库如何处理字符串比较中的大写和重音.使用Captial-Sensitive排序规则,’abc’!=’ABC’.但是,使用Captial-Insensitive排序规则,’abc’=’ABC’.

应该注意,校对不是字符集.这通常由数据类型(varchar == ASCII,nvarchar == Unicode)决定.排序规则确定如何比较字符串,而不是可以使用的字符集.

此外,整理对某些语言也很重要.鉴于拉丁语校对,你只需要担心大写和口音,但是鉴于丹麦校对,’aa’=’å’.1所以你可以看到校对在确定不同语言的排序和比较中起着重要作用,如好.

排序时排序非常重要,因为它确定了在给定不同大小写和重音的情况下如何排序字符串.这就是为什么它不断出现在你的搜索中.整理很重要,本周甚至是affected StackOverflow!

1:感谢迈克尔·马德森指出这个具体的例子.

总结

以上是内存溢出为你收集整理的在SQLite中不同方向的不同列上的ORDER BY全部内容,希望文章能够帮你解决在SQLite中不同方向的不同列上的ORDER BY所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/1160666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存