- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试先按事件事件排序我的 table ,然后是“结束日期”。这意味着,新创建的事件将始终位于最前面,后面是日期。当事件结束时,我希望最新的“endDate”在最前面。
下面是我的查询:
SELECT campaignId,
status,
dateCreated,
startDate,
endDate
FROM campaign
WHERE deleted='False'
ORDER BY DATE(endDate) > DATE(CURDATE()) DESC, campaignId DESC
看下面的截图,有些不是按“endDate”排序的(红框高亮显示)
第一部分是正确的,这意味着“endDate”还没有结束,并且按 id 在先排序。但是,最后一部分是错误的,结束的事件应该按“结束日期”排序。我哪里做错了?
更新 SQL Fiddle(使用时请忽略 WHERE deleted='False'
):http://sqlfiddle.com/#!9/0a7afb
最佳答案
ORDER BY DATE(endDate) > DATE(CURDATE()) DESC
表示 future 的事件排在第一位。它没有说明顺序。将表达式添加到 select 子句中,您将看到。
您可以执行 ORDER BY DATE(endDate) > DATE(CURDATE()) DESC, endDate DESC, campaignId DESC
,但是 DATE(endDate) > DATE(CURDATE())
表达式使排序变得非常慢并阻止使用索引。此外,您不必在日期列上执行 DATE()
。
如果您想要单独列出 future 的事件和过去的事件,您最好进行两次查询,将 endDate 条件放入 where
子句中。但是,对于小型数据集,这并不重要。
关于MySQL 先按 "id"再按 "date"排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854511/
这是我现在的代码: SELECT id, number FROM Media WHERE user = 10 ORDER BY id, number 但我希望它看起来像: SELECT id, num
我有一个奇怪的情况,我需要先订购 0,然后再下降一列。 假设我有这样的列 Status ------ 3 4 0 5 1 2 4 0 2 现在我需要下单了 Status ------ 0 0 5 4
我正在尝试先按事件事件排序我的 table ,然后是“结束日期”。这意味着,新创建的事件将始终位于最前面,后面是日期。当事件结束时,我希望最新的“endDate”在最前面。 下面是我的查询: SELE
标准排序函数文献会告诉您排序通常(合并、快速)可以在 N log N 中完成。 例如,如果我有这个列表:[1,6,3,3,4,2] 会在NlogN时间内排序为:[1,2,3,3,4,6] 如果我有
我是一名优秀的程序员,十分优秀!