gpt4 book ai didi

mysql - MySQL order by 子句中的连字符

转载 作者:行者123 更新时间:2023-11-29 04:40:41 25 4
gpt4 key购买 nike

我有一个用这一行的 MySQL 查询

ORDER BY -order_line_groups.sequence DESC, order_line_groups.id;

我想知道 order by 后面的连字符是什么意思。我尝试过使用和不使用它来执行,但它似乎没有什么不同。我也用解释查看了它,但找不到任何不同之处。

我找不到任何 MySQL 文档来提供帮助。我确实找到了这个: https://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html其中连字符列在“您将 ORDER BY 与包含键列名称以外的术语的表达式一起使用:”

它没有提供太多信息。有人可以解释这是做什么的或指向一些文档吗?

谢谢。

最佳答案

答案在问题中:

I did find this: https://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html where the hyphen is listed under "You use ORDER BY with an expression..."

这里的关键字是“表达式”。您可以在 ORDER BY 子句中使用表达式。

ORDER BY -order_line_groups.sequence DESC

是算术表达式,“连字符”不是连字符而是减号;一元负数学运算符。

它是如何工作的?

关于结果,它按预期工作:

  • 如果列 order_line_groups.sequence 的类型是 numeric typedate & time type (它们在内部也存储为数字)然后减号反转返回行的顺序。该子句等同于

      ORDER BY order_line_groups.sequence ASC
  • 如果列的类型是 string type然后 MySQL 尝试 convert the values列的数字(因为减法是算术运算并且没有为字符串定义)。当 MySQL 将字符串转换为数字时,它会在第一个不是数字的字符处停止。根据您在 order_line_groups.sequence 列中存储的数据,或多或少的字符串值将转换为数字 0

关于速度,如问题 MySQL 无法使用索引解析 ORDER BY 中提供的文档页面中所述。这会使查询变慢。

结论

使用 ORDER BY -order_line_groups.sequence 会使查询变慢。而且,当sequence列的类型是字符串类型时,它并没有提供一个很好的方法来对结果集进行排序。

关于mysql - MySQL order by 子句中的连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29659260/

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