仅当满足特定条件时,如何才能通过现场工作进行订购?

阿尔文

我想仅在比现在早的时候按topped_time字段对mysql查询结果进行排序,例如,如果topped_time为2016-7-6,则应将其考虑在内,但如果topped_time为2016-7-16,则应将其忽略。

我试过了

SELECT * FROM `article` ORDER BY IF(`topped_time` < CURRENT_TIME(), '`topped_time` DESC', ''), `published_time` DESC

SELECT * FROM `article` ORDER BY CASE WHEN `topped_time=` < CURRENT_TIME() THEN `topped_time` END, `published_time` DESC

即使toptop_time仍然比现在晚。

表格如下:

CREATE TABLE `article` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `published_time` datetime DEFAULT '0000-00-00 00:00:00',
  `topped_time` datetime DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `article` (`id`, `published_time`, `topped_time`) VALUES
(1, '2016-07-05 22:01:14', '0000-00-00 00:00:00'),
(2, '2016-07-05 22:01:23', '0000-00-00 00:00:00'),
(3, '2016-07-05 22:01:25', '2016-07-07 00:00:00'),
(4, '2016-07-05 22:01:27', '0000-00-00 00:00:00'),
(5, '2016-07-05 22:01:29', '0000-00-00 00:00:00');

在此处输入图片说明

此屏幕快照中的正确顺序应为id:4,5,3,2,1,因为id 4的topped_time是2016-07-06 00:00:00,早于现在,应该是第一个。ID 3的topped_time是2016-07-07 00:00:00,并且比现在晚,应该忽略。

什么是正确的查询,还是不可能?

Gevorg

我想这是您的选择:

SELECT * FROM `article`
ORDER BY 
    IF (`topped_time` < NOW(), `topped_time`, '0000-00-00 00:00:00') DESC, 
    `published_time`  DESC

+----+---------------------+---------------------+
| id | published_time      | topped_time         |
+----+---------------------+---------------------+
|  4 | 2016-07-05 22:01:27 | 2016-07-06 00:00:00 |
|  6 | 2016-07-05 22:01:28 | 2016-05-06 00:00:00 |
|  5 | 2016-07-05 22:01:29 | 0000-00-00 00:00:00 |
|  3 | 2016-07-05 22:01:25 | 2016-07-17 00:00:00 |
|  2 | 2016-07-05 22:01:23 | 0000-00-00 00:00:00 |
|  1 | 2016-07-05 22:01:14 | 0000-00-00 00:00:00 |
+----+---------------------+---------------------+

更新

您可能会注意到,我添加了另一行来证明您的解决方案是错误的

SELECT * FROM article 
ORDER BY topped_time < CURRENT_TIME() AND 
         topped_time DESC, published_time DESC;

+----+---------------------+---------------------+
| id | published_time      | topped_time         |
+----+---------------------+---------------------+
|  6 | 2016-07-05 22:01:28 | 2016-05-06 00:00:00 |
|  4 | 2016-07-05 22:01:27 | 2016-07-06 00:00:00 |
|  5 | 2016-07-05 22:01:29 | 0000-00-00 00:00:00 |
|  3 | 2016-07-05 22:01:25 | 2016-07-17 00:00:00 |
|  2 | 2016-07-05 22:01:23 | 0000-00-00 00:00:00 |
|  1 | 2016-07-05 22:01:14 | 0000-00-00 00:00:00 |
+----+---------------------+---------------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅当满足特定条件时,如何才能通过现场工作进行订购?

来自分类Dev

仅当变量满足特定条件时,才可以在php中进行重定向吗?

来自分类Dev

如果值满足特定条件,如何仅包含键

来自分类Dev

满足特定条件但满足其他条件时仅运行一次功能

来自分类Dev

仅在满足特定条件时如何使用$ addFields(聚合)

来自分类Dev

在MySQL中满足特定条件时如何排除行

来自分类Dev

不满足特定条件时如何插入表格

来自分类Dev

如何仅在满足特定条件时选择记录

来自分类Dev

满足特定条件时关闭QMessageBox

来自分类Dev

满足特定条件时关闭 AlertDialog

来自分类Dev

如何在jQuery中满足特定条件时阻止复选框以进行检查?

来自分类Dev

LINQ-如何保证仅返回一个满足特定条件的匹配条目?

来自分类Dev

满足特定条件的SQL仅选择行

来自分类Dev

mutate_at仅满足特定条件的var

来自分类Dev

AngularJS仅显示满足特定条件的元素

来自分类Dev

在满足特定条件的熊猫行之间进行简单的计算

来自分类Dev

如果仅在MongoDB中满足特定条件,则进行分组

来自分类Dev

每当行满足特定条件时,如何在行之间找到最大值?

来自分类Dev

满足特定条件时,如何在i的任意一侧合并Python列表元素

来自分类Dev

每当行满足特定条件时,如何在行之间找到最大值?

来自分类Dev

当列满足熊猫中的特定条件时,如何拉一审?

来自分类Dev

Python / Pandas:满足特定条件时如何处理数据列

来自分类Dev

满足特定条件时如何删除一组值?

来自分类Dev

在jQuery / JavaScript中,当满足特定条件时如何退出for循环

来自分类Dev

IF语句中满足特定条件时如何停止执行PHP脚本?

来自分类Dev

满足特定条件的代码?

来自分类Dev

满足特定条件时可以停止Simulink模拟吗?

来自分类Dev

只有满足特定条件时,jQuery自动完成

来自分类Dev

满足特定条件时更改按钮背景色

Related 相关文章

  1. 1

    仅当满足特定条件时,如何才能通过现场工作进行订购?

  2. 2

    仅当变量满足特定条件时,才可以在php中进行重定向吗?

  3. 3

    如果值满足特定条件,如何仅包含键

  4. 4

    满足特定条件但满足其他条件时仅运行一次功能

  5. 5

    仅在满足特定条件时如何使用$ addFields(聚合)

  6. 6

    在MySQL中满足特定条件时如何排除行

  7. 7

    不满足特定条件时如何插入表格

  8. 8

    如何仅在满足特定条件时选择记录

  9. 9

    满足特定条件时关闭QMessageBox

  10. 10

    满足特定条件时关闭 AlertDialog

  11. 11

    如何在jQuery中满足特定条件时阻止复选框以进行检查?

  12. 12

    LINQ-如何保证仅返回一个满足特定条件的匹配条目?

  13. 13

    满足特定条件的SQL仅选择行

  14. 14

    mutate_at仅满足特定条件的var

  15. 15

    AngularJS仅显示满足特定条件的元素

  16. 16

    在满足特定条件的熊猫行之间进行简单的计算

  17. 17

    如果仅在MongoDB中满足特定条件,则进行分组

  18. 18

    每当行满足特定条件时,如何在行之间找到最大值?

  19. 19

    满足特定条件时,如何在i的任意一侧合并Python列表元素

  20. 20

    每当行满足特定条件时,如何在行之间找到最大值?

  21. 21

    当列满足熊猫中的特定条件时,如何拉一审?

  22. 22

    Python / Pandas:满足特定条件时如何处理数据列

  23. 23

    满足特定条件时如何删除一组值?

  24. 24

    在jQuery / JavaScript中,当满足特定条件时如何退出for循环

  25. 25

    IF语句中满足特定条件时如何停止执行PHP脚本?

  26. 26

    满足特定条件的代码?

  27. 27

    满足特定条件时可以停止Simulink模拟吗?

  28. 28

    只有满足特定条件时,jQuery自动完成

  29. 29

    满足特定条件时更改按钮背景色

热门标签

归档