这是因为在SQL中,1
的含义取决于它所在的上下文。
在order by 1 desc
中,1
表示结果集的第一列。这是SQL的一种快捷方式,允许我们根据结果集的列顺序而不是列名来排序。例如,如果查询的第一列是column_name
,那么order by 1 desc
等同于order by column_name desc
。
然而,在where 1 is not null
中,1
只是一个数字。where
子句用于过滤行,其后的表达式必须计算为真或假。在这种情况下,1 is not null
始终为真,因为1
永远不会是null
。因此,这个条件不会过滤掉任何行。
总的来说,1
的含义取决于它在SQL语句中的位置和上下文。在order by
子句中,它表示结果集的列顺序;在where
子句中,它只是一个数字。希望这个解释能帮助你理解!