为什么 ORDER BY 'id' 'desc' 不返回语法错误?

You*_*nse 4 mysql sql sql-order-by

我正在测试一些明显错误的代码,并且非常确定它应该返回语法错误。但事实并非如此。以下查询工作没有错误(尽管也不对表进行排序,这至少满足我的期望):

SELECT * FROM dummy ORDER BY 'id' 'desc';
Run Code Online (Sandbox Code Playgroud)

有趣的是,那

SELECT * FROM dummy ORDER BY id 'desc';
Run Code Online (Sandbox Code Playgroud)

确实会产生语法错误。

MySQL如何解释后面的两个字符串ORDER BY?这些字符串有什么用呢?这是MCVE

jar*_*rlh 5

SELECT * FROM dummy ORDER BY 'id' 'desc';
Run Code Online (Sandbox Code Playgroud)

评估为

SELECT * FROM dummy ORDER BY 'iddesc';
Run Code Online (Sandbox Code Playgroud)

即 ORDER BY 一个(常量)字符串文字 - 它根本不影响 ORDER BY。

注意:这是 ANSI/ISO SQL 标准,字符文字可以由多个部分组成,无需显式连接。(几乎正确,需要换行符作为分隔符。)

  • 这是 ANSI/ISO SQL 标准,一个字符文字可以由多个部分组成,无需显式连接。 (3认同)
  • 有趣的!但是Mysql 是如何以及为什么在这里连接两个字符串呢? (2认同)