这是因为在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子句中,它只是一个数字。希望这个解释能帮助你理解!








