Mysql返回有错误的记录——聚合函数MAX()

标签 mysql linux

mysql Ver 14.14 Distrib 5.5.60,用于使用 readline 6.3 的 debian-linux-gnu (x86_64)

我有一张表“mytable”,其中包含 12500 条记录和这些字段

  • mytable_id(PRI, auto_increment)
  • x_id(整数)
  • y_id(整数)
  • 字段X(可变字符)
  • 字段 Y(varchar)。

执行咨询时:

select max(x_id), y_id, fieldX, fieldY 
from mytable;

并返回例如

x_id  | y_id | fieldX | fieldY
12121 | 111  | textX  | testY

但是执行时:

select  y_id, fieldX, fieldY 
from mytable 
where x_id = 12121;

返回

y_id | fieldX | fieldY
232  | textX  | textY

y_id 不匹配。

为什么?

最佳答案

如果你想要最后一行,你应该这样做

 SELECT *
 FROM mytable
 ORDER BY x_id DESC
 LIMIT 1

您的查询的问题是您从一个字段中选择 MAX 值,但另一个是随机值,并且与该 Max Value 所在的行无关。

关于Mysql返回有错误的记录——聚合函数MAX(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50452502/

相关文章:

php - 如何将表中的日期与当前日期(不包括 codeigniter 中的时间)进行比较

mysql - 在cmd中使用mysqldump备份数据库被拒绝访问

mysql - 带有 AUTO_INCREMENT 列的 MySQL 表中简单 SELECT 的默认顺序是什么

python - 在 Python(还有 MySQL)中使用 C/C++ 进行繁重的计算

linux - 是否有链接器标志强制它在启动时加载所有共享库?

PS1 更改的 Linux 脚本命令

无法在 Linux 中链接 GLFW3

mysql - 索引列和顺序

c++ - 如何使用 CMake 在 ubuntu 上找到已安装的 Boost 库?

linux - 事件套接字的 '{tcp_error, Socket, etimedout}' 消息从何而来?