Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 事件按优先级/粘性排序_Mysql - Fatal编程技术网

Mysql 事件按优先级/粘性排序

Mysql 事件按优先级/粘性排序,mysql,Mysql,我有下面的ORDERBY语句,它成功地按 未来事件 过去事件描述 订购人 当我翻转第1行和第2行时,它确实成功地在“未来”和“过去”内部排序,但我只需要像这样对未来事件进行排序 因此,基本上我需要添加优先级,只有当pm.meta_value>CURDATE时 我该怎么做 完整查询 实际上,我现在已经解决了自己的问题,尽管我不确定这是否是最好的解决方案 该条款现在看起来如下所示: #1 pm.meta_value < CURDATE(), #2 (case when pm.meta_valu

我有下面的ORDERBY语句,它成功地按

未来事件 过去事件描述 订购人

当我翻转第1行和第2行时,它确实成功地在“未来”和“过去”内部排序,但我只需要像这样对未来事件进行排序

因此,基本上我需要添加优先级,只有当pm.meta_value>CURDATE时

我该怎么做

完整查询


实际上,我现在已经解决了自己的问题,尽管我不确定这是否是最好的解决方案

该条款现在看起来如下所示:

#1 pm.meta_value < CURDATE(),
#2 (case when pm.meta_value > CURDATE() then pm2.meta_value end) DESC,
#3 (case when pm.meta_value > CURDATE() then pm.meta_value end) ASC,
#4 (case when pm.meta_value < CURDATE() then pm.meta_value end) DESC
在第2行,我刚刚为优先级包装了相同的case语句


我对改进持开放态度,所以我会让我的答案不被接受,这样其他人就可以得到学分。如果你有更好的想法,请告诉我:-

我现在已经设法解决了我自己的问题,尽管我不确定这是否是最好的解决方案

该条款现在看起来如下所示:

#1 pm.meta_value < CURDATE(),
#2 (case when pm.meta_value > CURDATE() then pm2.meta_value end) DESC,
#3 (case when pm.meta_value > CURDATE() then pm.meta_value end) ASC,
#4 (case when pm.meta_value < CURDATE() then pm.meta_value end) DESC
在第2行,我刚刚为优先级包装了相同的case语句


我对改进持开放态度,所以我会让我的答案不被接受,这样其他人就可以得到学分。如果您有更好的想法,请告诉我:-

您可以粘贴完整的SQL吗?你使用的别名可能意味着很多事情。我现在已经添加了它,但在第二条中也有注释,具有相同的含义。pm.meta_value=date,pm2.meta_value=priority请粘贴完整的SQL?你使用的别名可能意味着很多事情。我现在已经添加了它,但在第二条中也有注释,具有相同的含义。pm.meta_值=日期,pm2.meta_值=优先级
      SELECT *
        FROM %2$s p
  INNER JOIN %3$s pm ON (p.ID = pm.post_id AND pm.meta_key = "events_startdate")
   LEFT JOIN %3$s pm2 ON (p.ID = pm2.post_id AND pm2.meta_key = "events_priority")
  INNER JOIN `%4$sicl_translations` ON
    (`%4$sicl_translations`.element_id = p.ID AND `language_code` = "%5$s")
       WHERE p.post_status = "publish"
         AND p.post_type = "%1$s"
    ORDER BY
             pm.meta_value < CURDATE(),
             pm2.meta_value DESC,
             (case when pm.meta_value > CURDATE() then pm.meta_value end) ASC,
             (case when pm.meta_value < CURDATE() then pm.meta_value end) DESC
#1 pm.meta_value < CURDATE(),
#2 (case when pm.meta_value > CURDATE() then pm2.meta_value end) DESC,
#3 (case when pm.meta_value > CURDATE() then pm.meta_value end) ASC,
#4 (case when pm.meta_value < CURDATE() then pm.meta_value end) DESC