我试图为我的MySQL查询获取正确的ORDER BY
,但我无法通过正确的方式获取订单。
我有两列:
breaking_news
=值为NULL
或1
news_published_dt
=值为DATETIME
如何排序以便第一个输出breaking_news NOT NULL
按DATETIME
排序,之后的其余内容仅按DATETIME
排序?
我试过这个,但它没有给我输出
ORDER BY CASE WHEN n.breaking_news IS NOT NULL THEN 1 ELSE 2 END, n.news_published_dt DESC
答案 0 :(得分:2)
看起来,你正在寻找:
from jenkinsapi.jenkins import Jenkins
J = Jenkins('http://localhost:8080')
params = {'VERSION': '1.2.3', 'PYTHON_VER': '2.7'}
J.build_job('foo', params)
答案 1 :(得分:0)
SELECT * FROM table_name ORDER BY news_published_dt DESC
答案 2 :(得分:0)
select * from
(select *, 1 Shortby from table 1 where (breaking_news is null)
union all
select *, 2 Shortby from table 1 where (breaking_news=1)
) a
order by Shortby ,news_published_dt Desc
答案 3 :(得分:0)
MySQL中的SORT BY与您(包括我)所期望的工作方式不同。您不能对两列进行排序,而让第一列按第二列进行排序。
不起作用:
ORDER BY breaking_news, news_published_dt
结果:
breaking_news | news_published_dt
1 | 2019-04-17
1 | 2019-04-04
null | 2019-05-01
null | 2019-05-06
我发现完成此任务的唯一方法;分别查询所需的布尔结果,然后将两者结合在一起。
这可行:
(SELECT * FROM news_table WHERE breaking_news = 1 ORDER BY news_published_dt)
UNION
(SELECT * FROM news_table WHERE breaking_news <> 1 ORDER BY news_published_dt)
结果:
breaking_news | news_published_dt
1 | 2019-04-04
1 | 2019-04-17
null | 2019-05-01
null | 2019-05-06
要对此进行更全面的解释,请查看Edwin Wang's explanation
答案 4 :(得分:-1)
使用此 按顺序排序n.breaking_news不是空的n.breaking_news ELSE&#39; zzzzzzzzzzzzzzzzzzzzzz&#39; END,n.news_published_dt DESC