mysql如何进行多值排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql如何进行多值排序相关的知识,希望对你有一定的参考价值。

数据库表结构:
Date
Time

Date保存的是日期或时间戳,2.Time保存的是 1或者2, 表示上下午.
(日期和时间因代码逻辑所需,不方便统一成时间戳, 需要分开保存)

排序要求是:
日期最早的排在最前,同一日期上午优先,下午其后.

打个比方:
Date Time
2014-6-3 1(上午)
2014-6-1 2(下午)
2014-6-2 2(上午)

排序需求如下:
2014-6-1 下午
2014-6-2 上午
2014-6-3 上午

已经尽可能描述得很清晰了,希望懂的朋友们提示一下,如何写SQL的select语句

参考技术A ORDER BY Date, Time就可以吧 参考技术B select * from tbName order by date asc ,time asc 参考技术C select date,time from table order by date追问

这样只能按照日期排序,不能符合 同一日期上午优先的要求啊

追答

可以将时间转换为时间戳排序

参考技术D Order by Date ASC,Time ASC本回答被提问者采纳

对按分量多值 (SIMD) 数组进行排序

【中文标题】对按分量多值 (SIMD) 数组进行排序【英文标题】:sorting component-wise multi value (SIMD) array 【发布时间】:2015-05-26 09:34:42 【问题描述】:

我正在尝试找到一种O(n∙log(n)) 排序方法来同时对多个数组进行排序,以便多值数组中的元素将代表来自 4 个不同单值数组的元素,并且排序方法将对多值元素进行排序.

例如: 对于给定的 4 个单值数组 AnBnCnDn, 我会设置一个新数组 Qn 这样Qᵢ = [ Aᵢ Bᵢ Cᵢ Dᵢ ].Qᵢ 可以在此过程中更改,以便Qᵢ = [ Aaᵢ Bbᵢ Ccᵢ Ddᵢ ] 其中aᵢbᵢcᵢdᵢ 是索引列表 当然还有Qᵢ ≤ Qᵢ₊₁ = [ Aaᵢ₊₁ Bbᵢ₊₁ Ccᵢ₊₁ Ddᵢ₊₁ ]Aaᵢ ≤ Aaᵢ₊₁Bbᵢ ≤ Bbᵢ₊₁ 等等。 动机当然是使用 SIMD 指令来受益于这种结构来分别对 4 个数组进行排序。

我尝试使用 SIMD 比较器(例如_mm_cmplt_ps)和掩码交换(例如_mm_blendv_ps) 制作传统排序算法的修改版本(快速排序、堆排序、合并排序等) 但我总是遇到理论上决策树中似乎有O(n∙log(n)) 步骤的问题。 因此,决定是否设置枢轴(快速排序)或是否将父级与其其中一个子级交换(堆排序) 对于所有 4 个组件同时在一起是不正确的(因此,下一步 - 向右或向左 - 是不正确的)。

目前我只有 O(n²) 方法有效。

有什么想法吗?

【问题讨论】:

相关:vldb.org/pvldb/1/1454171.pdf @PaulR n 被认为非常大(非常密集的网格的坐标)。我之前处理过这篇文章。它谈到了一般排序(SIMD 结构中的单个数组) @PaulR,这看起来像是我需要阅读的一篇有趣的论文。谢谢! 【参考方案1】:

听起来sorting network 是您所问问题的答案,因为比较器的位置不依赖于数据。 Batcher's bitonic mergesort 是 O(n log2 n)。

【讨论】:

谢谢!这当然是我一直在寻找的

以上是关于mysql如何进行多值排序的主要内容,如果未能解决你的问题,请参考以下文章

对按分量多值 (SIMD) 数组进行排序

在 Solr 中对多值字段进行排序

Solr - 按多值字段上的OR搜索的最大匹配对结果进行排序

php+mysql多条件多值查询

如何更新 ms access vba 中的多值组合框?

Hashtable一个键多个值 在遍历怎么做啊