[英]How to do an IF statement in mysql as part of the SELECT statement
I'm comparing search engine rankings for URLs and I have 3 columns: URL, Rank, Previous rank. 我正在比较URL的搜索引擎排名,并且我有3列:URL,排名,上一个排名。 What I'd like to do is add a fourth column which says whether the rank has gone up or down.
我想做的是添加第四列,该列表示排名是上升还是下降。
For example 例如
URL | Rank | Previous_Rank
example.com/page1 | 2 | 16
example.com/page2 | 2 | 11
example.com/page3 | 1 | 14
example.com/page4 | 1 | 4
example.com/page5 | 101| 7
example.com/page6 | 101| 14
example.com/page7 | 101| 7
example.com/page8 | 6 | 17
example.com/page9 | 10| 17
example.com/page10| 19| 1
I'd like another column to return: 我想再返回一列:
URL | Rank | Previous_Rank | Movement
example.com/page1 | 2 | 16 | Up
example.com/page2 | 2 | 11 | Up
example.com/page3 | 1 | 14 | Up
example.com/page4 | 1 | 4 | Up
example.com/page5 | 101| 7 | Down
example.com/page6 | 101| 14 | Down
example.com/page7 | 101| 7 | Down
example.com/page8 | 6 | 17 | Up
example.com/page9 | 10| 17 | Up
example.com/page10| 19| 1 |Down
I'm using HeidiSQL which is mysql. 我正在使用HeidiSQL,它是mysql。 The data here is part of a larger table and is pulled together with this SELECT statement:
此处的数据是较大表的一部分,并与此SELECT语句一起拉出:
select
URL,
Rank,
Previous_Rank
from URL_Changes
where
date = "2017-06-14"
group by URL
order by 2
;
So my question is, how do I edit that select statement to bring back that extra column? 所以我的问题是,如何编辑该选择语句以带回该额外的列?
Thanks. 谢谢。
You use a CASE
statement for this: 为此,请使用
CASE
语句:
select
URL,
Rank,
Previous_Rank,
CASE WHEN Rank < Previous_Rank THEN 'Up' WHEN Rank > Previous_Rank THEN 'Down' WHEN Rank = Previous_Rank THEN 'No Change' END AS Movement
from URL_Changes
where
date = "2017-06-14"
group by URL
order by 2
;
In MySQL there is also an IF()
function, but CASE
is used on nearly every RDBMS and IF()
requires nesting to test for multiple scenarios, so Case
is generally the better choice. 在MySQL中,还有一个
IF()
函数,但是几乎每个RDBMS都使用CASE
并且IF()
需要嵌套以测试多种情况,因此,通常使用Case
是更好的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.