gpt4 book ai didi

mysql - 如何在 mysql 中执行 IF 语句作为 SELECT 语句的一部分

转载 作者:行者123 更新时间:2023-11-29 10:45:50 24 4
gpt4 key购买 nike

我正在比较 URL 的搜索引擎排名,我有 3 列:URL、排名、先前排名。我想做的是添加第四列,说明排名是上升还是下降。

例如

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

我想要返回另一列:

 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

我正在使用 HeidiSQL,它是 mysql。这里的数据是一个更大的表的一部分,并与以下 SELECT 语句一起提取:

select 
URL,
Rank,
Previous_Rank
from URL_Changes
where
date = "2017-06-14"
group by URL
order by 2
;

所以我的问题是,如何编辑该 select 语句以恢复该额外的列?

谢谢。

最佳答案

您为此使用 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
;

在 MySQL 中还有一个 IF() 函数,但几乎所有 RDBMS 上都使用 CASE,并且 IF() 需要嵌套测试多个场景,因此 Case 通常是更好的选择。

关于mysql - 如何在 mysql 中执行 IF 语句作为 SELECT 语句的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com