【发布时间】:2020-08-17 08:30:42
【问题描述】:
我正在查看一些在ORDER BY 中使用COALESCE 语句的SQL 语句。我已阅读有关 COALESCE 的文档,因此我试图了解在这种情况下我是否了解它是如何被使用的。
这是sql语句的一部分:
ORDER BY COALESCE([UpdatedOn], [CreatedOn]) DESC
是不是想说这个(通过我编造的一些假数据):
** 注意:日期格式为yyyy-mm-dd
ELID | LK | CreatedOn | UpdatedOn | Computed-OrderBy
+---------------------------------------------------------
1 | 'aaa' | 2020-01-01 | 2020-01-02 | 2020-01-02
2 | 'bbb' | 2020-01-01 | NULL | 2020-01-01
那么,这就是结果(在内存等中),SQL Server 将在Computer-OrderBy 列中对结果进行排序(我们从未真正看到)
所以结果是有序的:
ELID 2 - 2020-01-01
ELID 1 - 2020-01-02
更新 1:如果 COALESCE 在 SELECT 语句中,那么我不会问问题,因为我摸不着头脑。我在问什么时候ORDER BY'ing .. SQL sorta 在幕后是如何做到的。请注意我是如何创建一个新列 Computed-OrderBy 的?好吧,我希望看看这或多或少是 Sql Server 所做的......所以它知道如何按那些“计算”值排序。
【问题讨论】:
-
那么,您在这里实际问的是什么,
COALESCE是做什么的?你看过documentation吗? -
是的,我想看看我对 COALESCE 的理解是否正确。就像在幕后一样,这就是正在发生的事情。我会更新我的帖子以反映您的问题。
-
将
COALESCE([UpdatedOn], [CreatedOn])放入SELECT 列表中,看看它会返回什么。 -
感谢@CaptainKenpachi 的评论。那么我是如何写出“假数据”的......就像你说的那样?
-
哦,是的,您的语句中的顺序颠倒了,所以它是正确的。
标签: sql sql-server coalesce