gpt4 book ai didi

MySQL group by desc -如何解释此sql : SELECT ts, avg_time FROM xx WHERE ip ="MAX"GROUP BY id DESC LIMIT 300?

转载 作者:行者123 更新时间:2023-11-29 10:49:17 28 4
gpt4 key购买 nike

表格如下:

CREATE TABLE `api_stats` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(30) DEFAULT NULL,
`app_name` varchar(50) DEFAULT NULL,
`api_name` varchar(100) DEFAULT NULL,
`avg_time` float(10,5) DEFAULT NULL,
`ok` int(10) DEFAULT NULL,
`err` int(10) DEFAULT NULL,
`ts` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6741231 DEFAULT CHARSET=latin1

这个奇怪的sql是:

SELECT ts,avg_time FROM api_stats WHERE ip="MAX" GROUP BY id DESC LIMIT 300

似乎是错误的,但它运行...我的问题:

  1. 选择列不是像 sum、count 这样的聚合函数
  2. group by id desc 是什么?

最佳答案

这个查询有点愚蠢。

  1. 它选择 ip = 'MAX' 的所有记录(是的,单引号应该用于字符串文字)。
  2. 它按 ID 对结果进行分组,这不会改变任何内容,因为这是主键。
  3. 它将结果限制为 300 个任意行,因为没有 ORDER BY 子句。 (在旧版本中,GROUP BY 也保证在 MySQL 中进行排序,这就是为什么 GROUP BY 允许使用 DESC 关键字,否则就不会没有任何意义。因此,这可能曾经有效,现在应该改为 GROUP BY id ORDER BY id DESC LIMIT 300。)
  4. 它显示非聚合的 tsavg_time,但是,正如前面提到的,此查询中无论如何都不会发生聚合。

也许这只是一个拼写错误,而GROUP BY id实际上应该是ORDER BY id,这将使查询完全有效(除了非标准引号)然而,这在 MySQL 中是有效的)。

关于MySQL group by desc -如何解释此sql : SELECT ts, avg_time FROM xx WHERE ip ="MAX"GROUP BY id DESC LIMIT 300?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44040085/

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